使用宏需要注意的规范
1. 用宏定义表达式时,要使用完备的括号
如:
#define RECTANGLE_AREA( a, b ) (a) * (b)
#define RECTANGLE_AREA( a, b ) ((a) * (b))
主要原因就是由于宏替换的时候只是简单的字符替换, 如果我们不使用完备的括号, 那么很有可能或造成结果和我们想要得到的表达式不同.
2. 使用宏时,不允许参数发生变化
在某种程度上带参的宏定义与函数有几分类似。但是必须注意它们的区别,正如下面代码片段所示:
#define SQUARE( a ) ((a) * (a))
int Square(int a)
{
return a*a;
}
int nValue1 = 10, nValue2 = 10;
int