为什么枚举声明会被标记为const?

Mir*_*pas 15 c++ enums const

我在我工作的项目中看到了这个构造:

const enum SomeEnum
{
    val0,
    val1,
    val2
};
Run Code Online (Sandbox Code Playgroud)

const这里的目的是什么?

rod*_*igo 13

什么都没有.实际上,根据G ++,这是一个编译器错误:

error: qualifiers can only be specified for objects and functions
Run Code Online (Sandbox Code Playgroud)

然而,在C中它是允许的,但是没用.GCC说:

warning: useless type qualifier in empty declaration
Run Code Online (Sandbox Code Playgroud)

问题是const只适用于对象(变量)和成员函数,而不适用于基本类型.


Luc*_*ore 11

它对您的代码没有任何影响,但在这种情况下会:

const enum SomeEnum
{
    val0,
    val1,
    val2
} VAL0 = val0;
Run Code Online (Sandbox Code Playgroud)

这里,VAL0将是一个const变量(带有值val0).但TBH并没有多大用处.

  • 我认为它确实*有所作为:"它不应该编译". (6认同)