为什么C语言标识符可以包含$字符?C++中是否支持相同的用法?
关于C/C++标识符中$字符的支持说明
C语言的情况
- C标准(C89及后续所有正式版本)明确规定,合法标识符仅可由大小写字母、数字、下划线(
_)构成,且首字符不能为数字,$字符本身不属于标准允许的标识符字符范围。 - 你见到的可编译通过的情况,属于编译器的非标准扩展:GCC、Clang、MSVC等主流编译器都默认支持将$作为标识符合法字符,主要是为了兼容早期UNIX平台的遗留代码,并非C标准要求的通用行为。
- 可移植性说明:如果需要编写严格符合标准、跨平台的C代码,不要在标识符中使用$字符,部分不支持该扩展的编译器会直接抛出语法错误。
C++语言的情况
C++标准层面同样没有将$纳入合法标识符的允许字符范围,和C的规则一致,同样是主流编译器提供了对应的扩展支持,用法和C语言场景下完全相同。如果开启编译器的严格标准检查(比如给GCC/Clang添加-pedantic编译参数),会对包含$的标识符抛出扩展使用警告。
内容的提问来源于stack exchange,提问作者FI0r1an
相关产品推荐
相关产品推荐

