首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >包含特殊字符的有效标识符-C编程

包含特殊字符的有效标识符-C编程
EN

Stack Overflow用户
提问于 2018-06-11 08:58:39
回答 2查看 1.4K关注 0票数 0

有人能解释一下为什么_variable$2是一个有效的C编程标识符吗?

根据ISO documentation以及一些在线支持(可信的)来源,我认为只有字母,数字和_ (下划线)字符是允许的。

但是,像_variable$2这样的变量名是完全有效的,并且在编译和测试时可以正常运行。如果是这样的话,还有哪些特殊字符可以使用,也不可以使用?这是否仅限于字符,或者甚至可以将表情符号替换为C编程语言中有效的标识符名称?如有任何帮助,我们将不胜感激:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-11 09:27:22

能够解释为什么:'_variable$2‘是一个有效的C编程标识符?

从严格遵循的C程序不能使用包含'$‘字符的标识符的意义上讲,它不是。

我认为只有字母、数字和'_‘(下划线)字符是允许的。

C标识符中只允许使用下划线、十进制数字、无重音的大小写字母和通用字符名称(通用字符名称是C11中的新增字符名称)。但是,该标准明确允许实现定义它们也接受的其他字符。

但是,像'_variable$2‘这样的变量名是完全有效的,并且在编译和测试时可以正常运行。

一个实现接受这样的标识符并不能使它们“完全有效”。它只是使它们在该实现中有效。

,如果是这样的话,还有哪些特殊字符可以使用,或者不可以使用?这是否仅限于字符,或者甚至可以将表情符号替换为C编程语言中有效的标识符名称?

该标准规定,标识符中接受的附加字符列表是由实现定义的。这在标准中有一个特定的含义:一致性实现必须为其对所有实现定义的特征的选择提供文档。因此,如果您愿意依赖于所选实现的特定特征,那么您应该在其文档中找到该实现所允许的额外字符的列表或描述。

另一方面,如果您希望您的程序在多个不同的C实现中不变地工作,那么您应该坚持只使用字母、数字和下划线,或者在标识符中使用通用字符名称。

不要太快忽略那些通用的字符名称:只要表情符号(和许多其他字符)是用Unicode编码的,那么您可以使用UCNs将它们包括在您的标识符中,至少在逻辑意义上是这样,前提是您满足于依赖C11。

票数 2
EN

Stack Overflow用户

发布于 2018-06-11 09:24:33

当前的C标准ISO/IEC 9899:2011定义了第6.4.2节中允许在标识符中使用的字符集。在那里,他们添加了一句非常不舒服的句子:

其他实现定义的字符

因此,在理论上,只要标识符以名为identifier-nondigit的组中的一个字符开始,该组包含字母a-z,大小写和下划线,(几乎)所有内容都会运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50789342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档