我在源代码管理中添加了一个枚举定义为:
的文件enum { OK = 0, ERROR };
但是在编译时,它会抛出“数字常量之前的预期标识符”之类的错误。 我对这个和罪魁祸首的研究是否应该是'OK',这是在代码中的其他地方定义的。所以,我改回OK,OK_1,确实解决了这个问题。
但是,我无法在我的代码库中找到之前定义的“OK”。 我从顶层跑了一个grep,找不到它。我很确定我已经涵盖了所有与应用程序相关的代码,但确定不存在。
我认为它不太可能是某个共享库的一部分,因为编译过程甚至没有达到链接阶段。它可能来自其中一个头文件。
是否有某种方式/ linux工具可以被欺骗以找到这个OK的来源?
答案 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页面粘贴的