我在源代码控制中添加了一个文件,它有一个枚举定义:
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/