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 的来源?
如果您使用 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 页面粘贴的
| 归档时间: |
|
| 查看次数: |
23930 次 |
| 最近记录: |