【问题标题】: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 为什么这个问题的分数很低?这让我被禁止提出进一步的问题?

标签: c++ variables standards


【解决方案1】:

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

What is pure C++

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      编译DEMO.C:

      非法字符'$' (0x24)

      一些编译器可能支持它。

      【讨论】:

        猜你喜欢
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-09
        • 2021-07-30
        • 2017-06-25
        • 2013-01-05
        • 1970-01-01
        相关资源
        最近更新 更多