为啥 $ 符号不能用作标识符的一部分? [复制]

Posted

技术标签:

【中文标题】为啥 $ 符号不能用作标识符的一部分? [复制]【英文标题】:Why the $ symbol can not be used as a part of an identifier? [duplicate]为什么 $ 符号不能用作标识符的一部分? [复制] 【发布时间】:2017-09-08 08:27:33 【问题描述】:

我是 C++ 的新手。我在一本 C++ 的书中找到了以下语句:“在任何 C++ 程序中,变量名都以字母开头,并且只包含字母、数字和下划线。以下不是变量名:”

2x             // a name must start with a letter
time$to$market // $ is not a letter, digit, or underscore
Start menu     // space is not a letter, digit, or underscore

问题是为什么time$to$market 不是变量名? 我尝试编译它并且编译器没有抱怨,我使用的编译器是 QT 中的 MinGW 32bit for c++。但是它应该抱怨!

【问题讨论】:

我们不能在变量名中使用$符号,特殊字符中只允许下划线 GCC(可能还有其他)有一个扩展名,允许在标识符中使用$ 老兄,字母表示a-zA-Z。数字表示0-9。下划线表示_ @Yves:这实际上不是真的(关于字母),尽管常识您应该限制自己使用单码点、无重音的拉丁字母字符。 @Yves 为什么这个问题的分数很低?这让我被禁止提出进一步的问题? 【参考方案1】:

编译器有不同的变体。一种可能编译得更快,另一种可能由于某些原因而与某些默认设置不同。不知道你用的是什么编译器。但是,如果您对编译器进行一些研究,您会发现 $ 是允许的。尝试使用不同的编译器进行编译,以完全赶上你的书。查看此主题以了解纯 c++ 的含义。因为书籍通常教纯语言。

What is pure C++

【讨论】:

【参考方案2】:

我尝试使用它,编译器没有报错。

即使您当前的编译器支持它,也不要这样做(正如 Quentin 在评论中指出的那样)。它不在标准中,因此您的代码不能移植到其他环境,甚至不能移植到使用不同标准的相同编译器(尝试 GCC 选项-ansi-std=c++11etc.)。可能发生的最好情况是您在编译时遇到错误,最糟糕的是您将在几个小时内寻找未定义的行为。

【讨论】:

【参考方案3】:

这完全取决于您使用的编译器,因为我在 TC 4.5 中使用它会显示此错误:

编译DEMO.C:

非法字符'$' (0x24)

一些编译器可能支持它。

【讨论】:

以上是关于为啥 $ 符号不能用作标识符的一部分? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

BAT文件如何注释

不能将标量值用作数组

CMD命令总结

为啥 typedef 的名称可以用作结构成员的名称?

Java 基础 之 标识符

javascript基础总结