zoukankan      html  css  js  c++  java
  • 一个C++宏定义与枚举定义重复的编译错误

    C++的开发效率低是众所周知的,原因比如有:

    • 语言复杂度高
    • 编译效率低
    • 工具链不够完整高效(尤其是linux下)

    另外一个恐怕是不少编译错误让人摸不着头脑,今天碰到一个,举个例子:

      1 #include <stdio.h>
      2 
      3 enum LogLevel {
      4     ERROR,
      5     WARN,
      6     INFO,
      7     DEBUG,
      8     TRACE
      9 };
     10 
     11 
     12 int main()
     13 {
     14     printf("%d
    ", ERROR);
     15 }
     16 

    编译错误为:

    $ g++ -DDEBUG test.cpp 
    test.cpp:7:5: error: expected identifier before numeric constant

    这里的错误,其实是说枚举DEBUG不合法,因为已经有个宏定义也叫DEBUG了。

    如果是一个比较普通的enum名字,刚好在某处不怎么可见的地方被宏定义了,看到这个错误那是相当不知道到底哪里错了。。。

  • 相关阅读:
    在Eclipse中使用Checkstyle 检查Java代码规范
    文件缓存法的具体实现
    hdu 4454 Stealing a Cake
    uva 11922
    uva 11020
    uva 12206
    uva 11107
    uva 11796
    uva 11178
    uva 11437
  • 原文地址:https://www.cnblogs.com/baiyanhuang/p/3307951.html
Copyright © 2011-2022 走看看