宏定义后面不要加分号-会产生诡异的编译错误
写程序时间长了,没句末尾都习惯性的的加上一个分号,对于宏定义来说,万万不可!
看一个例子
代码
#include <iostream>
#include <iomanip>
using namespace std ;
// Do not place the ';' after Macro definition!!!
// You will got very strange error
#define PI 3.14; // the semicolon here is forbidden!!!
double Area(double pi, double r)
{
return pi * r * r ;
}
int main(void)
{
cout << Area(PI, 2.0f) << endl ;
getchar() ;
}
我在VS2008下面编译,得到如下错误信息
Error 1 error C2143: syntax error : missing ')' before ';' d:\codes\directx\test\test2\main.cpp 16
Error 2 error C2660: 'Area' : function does not take 1 arguments d:\codes\directx\test\test2\main.cpp 16
Error 3 error C2143: syntax error : missing ';' before ',' d:\codes\directx\test\test2\main.cpp 16
Error 4 error C2059: syntax error : ')' d:\codes\directx\test\test2\main.cpp 16
可见这个多余的分号是多么可恶!
另外,宏定义中最好也不要加空格,而且对于多个参数或者表达式来说,最好用括号括上。能用常量代替的地方就不要用宏了。。。
作者:zdd
出处:http://www.cnblogs.com/graphics/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号