尽管有它的名字,g 4.7 中的 -fextended-identifiers 选项还是无法允许完整范围的Unicode 字符作为标识符。虽然此选项启用扩展标识符,但它将它们限制为指定范围内的字符,从而阻碍了创建更有意义的变量名称。
尽管附件 E.1 中允许使用 10000-1FFFD 范围内的字符,但该标准并没有不禁止它们作为 E.2 中的初始字符。然而,g 4.7 似乎忽略了这一规定,导致用户无法使用像广泛识别的 ?.
这样的字符,其他编译器提供了不同级别的支持,这更增加了混乱。例如,Clang 3.3 允许 ?和 U0001F603 作为仅带有 -std=c 11 的标识符。
GCC 已更新,自 g 4.7 起为标识符中的 Unicode 字符提供更广泛的支持:
但是,需要注意的是即使 GCC 更高版本提供了扩展支持,限制仍然存在。 -fextended-identifiers 选项仍处于实验阶段,可能无法按预期运行。
虽然 Unicode 字符可以增强标识符的可读性和表现力,但它们在 g 中的支持仍然有限。用户在尝试使用 Unicode 字符作为标识符时可能会遇到不一致和限制。为了获得最佳的交叉编译器兼容性,建议遵守标准命名约定,避免使用 Unicode 字符,直到建立更广泛的支持。
以上是标识符中的 Unicode:为什么 g 无法支持全范围?的详细内容。更多信息请关注PHP中文网其他相关文章!