首页 >后端开发 >C++ >标识符中的 Unicode:为什么 g 无法支持全范围?

标识符中的 Unicode:为什么 g 无法支持全范围?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-11 02:32:02638浏览

Unicode in Identifiers: Why Does g   Fall Short in Supporting the Full Range?

标识符中的 Unicode 字符:为什么 g 达不到要求?

尽管有它的名字,g 4.7 中的 -fextended-identifiers 选项还是无法允许完整范围的Unicode 字符作为标识符。虽然此选项启用扩展标识符,但它将它们限制为指定范围内的字符,从而阻碍了创建更有意义的变量名称。

尽管附件 E.1 中允许使用 10000-1FFFD 范围内的字符,但该标准并没有不禁止它们作为 E.2 中的初始字符。然而,g 4.7 似乎忽略了这一规定,导致用户无法使用像广泛识别的 ?.

这样的字符,其他编译器提供了不同级别的支持,这更增加了混乱。例如,Clang 3.3 允许 ?和 U0001F603 作为仅带有 -std=c 11 的标识符。

GCC 的有限支持

GCC 已更新,自 g 4.7 起为标识符中的 Unicode 字符提供更广泛的支持:

  • 从 4.8 版本开始,GCC 支持基本多语言平面之外的扩展 Unicode 字符(BMP) 作为标识符。
  • 随着 4.9 版本的发布,GCC 与 C11 字符集对齐,启用使用 C11 字符集的标识符。

但是,需要注意的是即使 GCC 更高版本提供了扩展支持,限制仍然存在。 -fextended-identifiers 选项仍处于实验阶段,可能无法按预期运行。

结论

虽然 Unicode 字符可以增强标识符的可读性和表现力,但它们在 g 中的支持仍然有限。用户在尝试使用 Unicode 字符作为标识符时可能会遇到不一致和限制。为了获得最佳的交叉编译器兼容性,建议遵守标准命名约定,避免使用 Unicode 字符,直到建立更广泛的支持。

以上是标识符中的 Unicode:为什么 g 无法支持全范围?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn