编译器支持枚举值

Ant*_*ony 1 c++ standards enums compilation

鉴于enum如此声明:

enum {
    A,
    B,
    C,
    D
};
Run Code Online (Sandbox Code Playgroud)

参考C++ 11标准的第7.2节,通用编译器支持是什么?具体来说,摘自第7.2.2节:

如果第一个枚举器没有初始化器,则相应常量的值为零.没有初始值设定项的枚举器定义为枚举数提供了通过将前一个枚举数的值增加1而获得的值.

我可以期待共同的,现代的编译器(GCC,英特尔,铛,近期CL的版本,其他人),给予同样的结果,那就是A = 0,B = 1,C = 2,和D = 3

Nic*_*las 6

你引用的规则在C++ 11中并不新鲜.它是C++ 03,C++ 98,C11,C99和C89的一部分.这些语言被标准化之前,这个规则就存在了.Java和C#都使用它们的枚举继承了这种行为.

是的,编译器支持这部分语言.就像他们支持if,switch,#define,intS和其它基本语言结构.

我们不是在谈论r值引用或lambdas或其他东西.这是迄今为止许多程序员出生之前的核心内容.