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

时间:2016-08-04 05:45:11

标签: c++ linux enums c-preprocessor

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

的文件
enum { OK = 0, ERROR };

但是在编译时,它会抛出“数字常量之前的预期标识符”之类的错误。 我对这个和罪魁祸首的研究是否应该是'OK',这是在代码中的其他地方定义的。所以,我改回OK,OK_1,确实解决了这个问题。

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

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

是否有某种方式/ linux工具可以被欺骗以找到这个OK的来源?

3 个答案:

答案 0 :(得分:4)

将我的评论转换为答案。

看起来您需要预处理器输出Can gcc output C code after preprocessing?

答案 1 :(得分:-1)

我的英语不好,但你可以试试enum var {xxx,xxx},你可以自定义var。

答案 2 :(得分:-1)

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

枚举的一个重要缺点就是你不能拥有2个同名的枚举。 有了enum类,这个画回去了,你可以写这样的东西:

enum class Color {RED, GREEN, BLUE}; 
enum class Feelings {EXCITED, MOODY, BLUE};

稍后在代码中:

Color color = Color::GREEN;
if ( Color::RED == color )
{
    // the color is red
}

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