C++语言声明变量时能否使用$、₹等货币符号作为变量名?
C++标识符使用货币符号的规则说明
标准层面的硬性规定
按照正式ISO C++标准的定义,合法标识符(变量名、函数名等用户自定义名称)的可用字符有严格限制:
- 标识符首字符只能是大小写英文字母(
a-z/A-Z)、下划线_,或是标准指定范围内、属于字母类的Unicode通用字符名 - 首字符之后的位置,除上述字符外,额外允许使用数字
0-9
你提到的#、*、%属于运算符/语法符号,本身就不在允许列表里,任何场景下都不能作为标识符组成部分。
两类货币符号的实际支持情况
$(美元符号):不属于C++标准规定的合法标识符字符,但GCC、Clang、MSVC等几乎所有主流编译器都做了兼容扩展,默认允许在标识符里使用$。注意这属于非标准扩展,如果开启严格标准合规校验(比如GCC添加-pedantic-errors编译参数),用$的标识符会直接触发编译错误。₹(印度卢比符号,Unicode码点U+20B9):既不在C++标准允许的标识符字符列表里(属于货币符号分类,不属于标准认可的字母类字符),也没有获得主流编译器的扩展支持,直接写在变量名里几乎一定会报语法错误。
跨平台、跨编译器兼容的代码请严格遵循标准要求,不要在标识符里使用任何货币符号。哪怕是支持度较高的
$,也仅建议在对接特殊生成代码、底层汇编符号等极个别场景使用,常规业务代码不要用这类非标准字符。
内容的提问来源于stack exchange,提问作者MudassaRXaeed
相关产品推荐
相关产品推荐

