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

編譯錯誤為:

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

 

這里的錯誤,其實是說枚舉DEBUG不合法,因為已經有個宏定義也叫DEBUG了。

如果是一個比較普通的enum名字,剛好在某處不怎么可見的地方被宏定義了,看到這個錯誤那是相當不知道到底哪里錯了。。。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM