C++ 枚举类:未命名值错误

C++ 枚举类:未命名值错误,c++,visual-studio-2013,C++,Visual Studio 2013,我有 这项工作: enum class ErrorLevel { VERBOSE, DEBUG_, INFORMATION, WARNING, ERROR }; 这并不是: assertDetectionParameters( parameterSet, ErrorLevel::WARNING ); 错误1错误C2589:“常量”:在“::”右侧的非法标记 错误2错误C2059:语法错误:':'

我有

这项工作:

enum class ErrorLevel
    {
        VERBOSE,
        DEBUG_,
        INFORMATION,
        WARNING,
        ERROR
    };
这并不是:

assertDetectionParameters( parameterSet, ErrorLevel::WARNING );
错误1错误C2589:“常量”:在“::”右侧的非法标记
错误2错误C2059:语法错误:':'

雷斯哈珀说:

“ErrorLevel未命名值”


我的枚举中的某些名称出现此错误

ERROR
可能已经是某个预处理器宏了。尝试将其更改为其他内容,例如
错误
,以验证此假设。或者,通过预处理器运行代码,查看正在进行哪些替换(
gcc-E…
或Visual Studio中的任何等效项)。

ERROR
可能已经是某个预处理器宏。尝试将其更改为其他内容,例如
错误
,以验证此假设,是的,就是它。请补充一个答案。Thx.一个更好的解决方案是将预处理器宏和其他代码分开,始终对宏使用
大写字母名称
,并且只对宏使用。我认为
ERROR
是一个完全合法的名称,任何符合标准的编译器都不能定义它。不要使用垃圾编译器。@Walter你认为这是编译器问题的原因吗?我只是在一个普通的vs2013中尝试了相同的代码,错误并不是由编译器或标准头定义的。
assertDetectionParameters( parameterSet, ErrorLevel::ERROR );