c++ - 枚举错误 : expected identifier before numeric constant

标签 c++ linux enums c-preprocessor

我在源代码控制中添加了一个文件,它有一个枚举定义:

enum { OK = 0, ERROR };

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

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

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

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

最佳答案

如果您使用的是 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};

稍后在代码中:

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

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

关于c++ - 枚举错误 : expected identifier before numeric constant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38759288/

相关文章:

enums - 枚举的 Kotlin Proguard 规则?

java - Java 中的枚举。优点?

c++ - mingw32:所有编译的可执行文件挂起

c++ - boost 线程和类

c++ - 智能指针模板和自动删除指针

android - adb 不显示 nexus 5 设备

linux - 从 .iso 修改 index.php

c - Linux 共享库 : replace symbol runtime

Java 枚举的设计问题

c++ - 有没有什么方法可以在 constexpr/consteval 上下文中以 char 数组的形式访问已知大小的任意数据?