C++的開發效率低是衆所周知的,緣由好比有: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