3

C++ 入门 说:

我们在程序中定义的标识符不能包含 2 个连续的下划线,标识符也不能以下划线开头,后跟一个大写字母。另外,在函数外被罚款的标识符不能以下划线开头

一切都很好,但是

int _c = 55;                  // outside function starts with _

int main () {

    int _A = 12;              // _ followed by uppercase letter
    cout << _A << endl;

    int __b__ =33;            // 2 consecutive __
    cout << __b__ << endl;

    cout << _c << endl;

}

上面的代码在 mac上编译得非常好g++ 4.7.1,使用以下标志

g++ -pedantic -Wall -Werror -std=c++11 -O3 -funroll-loops -fprefetch-loop-arrays

请问我错过了什么?

4

2 回答 2

9

过马路而不注意双向交通并不能保证您会被公共汽车碾过,但这仍然是一个坏主意。

有一天它不会工作......

于 2012-08-18T19:18:14.033 回答
4

没有。带有前导下划线后跟大写字母的标识符和带有两个下划线的标识符仅保留。

您的编译器供应商可能会决定随时使用它们(例如,编译器供应商可以使用 _A 作为关键字),因此您不应该使用它们。通常,标准库是使用保留标识符实现的,因此它们不会导致编译错误。

于 2012-08-18T19:13:53.997 回答