诡异的C++ #define编译错误
2008-11-29 22:27
411 查看
前几天写代码的时候遇到了一个十分诡异的编译错误。对于下面的代码,你能够发现问题在那里吗?
编译器给出了下面这个错误信息:
testdefine.cpp(8) : error C2059: syntax error : 'if'
意思是if语法错误。显然这个不是真正原因。实际错误的原因其实很简单,在if的上一行的\那里多了一个空格,现在我把整个代码选择上,就比较容易看得出来问题了:
去掉多余的空格,再次编译,通过。
其实对于C/C++的预处理器而言,很容易就可以过滤掉\后面多余的空格,而没有必要由此引发语法错误。就算是要引发语法错误,也必须得有一个合理清晰的错误信息,不然只会浪费用户的时间。
1: #define test(a, b, c) \
2: a; \
3: if (b) \
4: c
编译器给出了下面这个错误信息:
testdefine.cpp(8) : error C2059: syntax error : 'if'
意思是if语法错误。显然这个不是真正原因。实际错误的原因其实很简单,在if的上一行的\那里多了一个空格,现在我把整个代码选择上,就比较容易看得出来问题了:
去掉多余的空格,再次编译,通过。
其实对于C/C++的预处理器而言,很容易就可以过滤掉\后面多余的空格,而没有必要由此引发语法错误。就算是要引发语法错误,也必须得有一个合理清晰的错误信息,不然只会浪费用户的时间。
相关文章推荐
- 诡异的C++ #define编译错误
- Linux下编译C++程序遇到错误:undefined reference to '***'
- linux下编译C++程序出现错误 “*** stack smashing detected ***, eclipse解决方法
- c++模板函数声明定义分离编译错误详解
- 拒绝深坑!记录找了多半天时间的C++编译失败的错误
- C++ goto 在g++ 编译时出现 crosses initialization 和 jump to label xxx [-fpermissive] 错误
- c++遇到的编译错误
- C++编译错误,连接错误,运行错误
- C++常见编译连接错误
- c++模板函数声明定义分离编译错误详解
- C++常见gcc编译链接错误解决方法
- c++ 编译错误
- linux下c++程序编译错误--理解typename
- .NET下编译C++代码时出现fatal error C1083: 无法打开包括文件:“xuhk_JNIHelloWorld.h”: No such file or directory错误的解决方法。
- gcc 编译c++常见错误汇总
- gcc 编译c++常见错误汇总
- C++常见编译错误
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- 基于C++中常见编译错误的总结详解
- C++常见的编译错误中英对应翻译