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