枚举错误:数字常量之前的预期标识符

use*_*996 8 c++ linux enums c-preprocessor

我在源代码管理中添加了一个文件,其枚举定义为:

enum { OK = 0, ERROR };
Run Code Online (Sandbox Code Playgroud)

但在编译时,它抛出了诸如“数字常量之前的预期标识符”之类的错误。我对此进行了研究吗?罪魁祸首应该是“好的”,它是在代码的其他地方定义的。因此,我将“OK”更改为“OK_1”,问题确实得到了解决。

但是,我无法在我的代码库中找到之前定义的“OK”。我从顶层运行了 grep 但找不到它。我很确定我已经涵盖了所有与应用程序相关的代码,但是还没有。

我认为它不太可能是某些共享库的一部分,因为编译过程甚至没有达到链接阶段。它可能来自头文件之一。

有没有一种方法/Linux 工具可以以某种方式被欺骗来找到这个 OK 的来源?

Wie*_*mny 4

如果您使用 C++ 11,请查看枚举类: http://www.cprogramming.com/c++11/c++11-nullptr-strongly-typed-enum-class.html

枚举的一大缺点是不能有 2 个同名的枚举。有了枚举类,这个缺点就消失了,你可以这样写:

enum class Color {RED, GREEN, BLUE}; 
enum class Feelings {EXCITED, MOODY, BLUE};
Run Code Online (Sandbox Code Playgroud)

稍后在代码中:

Color color = Color::GREEN;
if ( Color::RED == color )
{
    // the color is red
}
Run Code Online (Sandbox Code Playgroud)

代码示例是从链接的 www 页面粘贴的