Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么要将枚举声明标记为const?_C++_Enums_Constants - Fatal编程技术网

C++ 为什么要将枚举声明标记为const?

C++ 为什么要将枚举声明标记为const?,c++,enums,constants,C++,Enums,Constants,我在我工作的项目中看到了这种结构: const enum SomeEnum { val0, val1, val2 }; const的作用是什么?它对代码没有影响,但在这种情况下: const enum SomeEnum { val0, val1, val2 } VAL0 = val0; 这里,VAL0将是一个const变量(值为VAL0)。不过,它没有多大用处。什么都没有。实际上,根据G++的说法,这是一个编译器错误: error: quali

我在我工作的项目中看到了这种结构:

const enum SomeEnum
{
    val0,
    val1,
    val2
};

const
的作用是什么?

它对代码没有影响,但在这种情况下:

const enum SomeEnum
{
    val0,
    val1,
    val2
} VAL0 = val0;

这里,
VAL0
将是一个
const
变量(值为
VAL0
)。不过,它没有多大用处。

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

error: qualifiers can only be specified for objects and functions
然而,在C语言中它是允许的,但没有用。GCC表示:

warning: useless type qualifier in empty declaration

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

我认为它确实有区别:“它不应该编译”。@Nawaz我看到它没有编译,但可能只是编译器。规则中有什么规定是不允许的吗?我见过编译器同时接受和拒绝
静态结构X{}。与执行
常量int相同或类似的我想。在C++中,表达式可以是代码> const 或<代码> Value,而不是类型。这就像写
const int @ @克里斯说。“纳瓦兹,我同意这是没有道理的,我的意思是我不认为这是直接被处理的(我知道),所以它可能是编译器。我相信这是无效的C++代码,但Visual Studio确实接受它(GCC不)。此外,VisualStudio还接受
const class A{/*…*/}。与MSVC相关的错误: