gpt4 book ai didi

c - C99 是否允许在标识符中使用通用字符名称?

转载 作者:太空狗 更新时间:2023-10-29 16:01:33 25 4
gpt4 key购买 nike

来自 C99 规范的 WG14/N1124 草案的 §6.4.2,“标识符”:

identifier:  
identifier-nondigit
identifier identifier-nondigit
identifier digit

identifier-nondigit:
nondigit
universal-character-name
other implementation-defined characters

和 §6.4.3,“通用字符名称”:

universal-character-name:
\u hex-quad
\U hex-quad hex-quad

这似乎表明像 foo\u00AAbar 这样的标识符根据语法是有效的。我在语义中找不到任何其他建议。然而 GCC 甚至没有尝试解析它就拒绝了这样的标识符:

<stdin>:2: error: stray ‘\’ in program
<stdin>:2: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘u00AAbar’
<stdin>:2: error: ‘u00AAbar’ undeclared (first use in this function)

这是 GCC、C99 标准的疏忽还是我的推理?

最佳答案

这三个都不是。它只是一个长期未实现(或更确切地说,仅部分实现)的功能。它最近已经完成,将在 GCC 5 中可用。在该版本之前,您可以使用 -fextended-identifiers 命令行选项,但有些情况下它出错导致默认情况下未启用。

您可以在 Status of C99 features in GCC 上看到这个列表.

关于c - C99 是否允许在标识符中使用通用字符名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27071694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com