首页 > 后端开发 > C++ > 正文

尽管有扩展标识符支持,为什么 G 4.7 仍难以处理标识符中的 UTF-8 字符?

Mary-Kate Olsen
发布: 2024-11-10 08:00:03
原创
461 人浏览过

Why Does G   4.7 Struggle with UTF-8 Characters in Identifiers Despite Extended Identifier Support?

标识符中的 UTF-8 字符:G 的有限支持

尽管支持扩展标识符,G 4.7 仍缺乏对 UTF-8 字符的支持在标识符中。当尝试使用 Unicode 字符时会出现此问题,例如笑脸表情符号 (U 1F603),根据 C 标准(附录 E.1)这是允许的。

G 中的 Unicode 字符限制

最初,作者尝试使用通用字符名称(Uxxxx)来表示 Unicode 字符。然而,G 拒绝了这种方法,理由是“U0001F603”在标识符中无效。

-fextend-identifiers 的有限功能

-fextended-identifiers 选项虽然声称扩展了标识符支持,但在 G 4.7 中却存在不足。它仅承认 ucnid.tab 中定义的一小部分字符,符合过时的 C 98 和 C99 标准。

跨编译器兼容性

自 GCC 4.9 起,添加了对C11字符集的支持。这允许使用 U0001F603 作为标识符。然而,即使使用 GCC 8.2,使用表情符号的原始代码仍然存在问题。

相比之下,Clang 3.3 的代码没有任何问题,即使没有其他选项,例如 -fextended-identifiers 或 -finput-charset=UTF -8.

以上是尽管有扩展标识符支持,为什么 G 4.7 仍难以处理标识符中的 UTF-8 字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板