一個C++宏定義與枚舉定義重複的編譯錯誤

C++的開發效率低是衆所周知的,緣由好比有:linux

  • 語言複雜度高
  • 編譯效率低
  • 工具鏈不夠完整高效(尤爲是linux下)

另一個恐怕是很多編譯錯誤讓人摸不着頭腦,今天碰到一個,舉個例子:ide

  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\n", ERROR);
 15 }
 16 

編譯錯誤爲:工具

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

 

這裏的錯誤,實際上是說枚舉DEBUG不合法,由於已經有個宏定義也叫DEBUG了。spa

若是是一個比較普通的enum名字,恰好在某處不怎麼可見的地方被宏定義了,看到這個錯誤那是至關不知道到底哪裏錯了。。。code

相關文章
相關標籤/搜索