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名字,剛好在某處不怎麼可見的地方被巨集定義了,看到這個錯誤那是相當不知道到底哪裡錯了。。。