如果是带参数的宏,那么参数要加括弧,否则展开时会出问题,比如下面这个求平方的宏

#define SQUARE(x) x*x

如果输入是单个数字尚可得到正确结果,但如果输入是表达式的话,就出问题了,比如输入3 - 1,展开后变成

3 – 1 * 3 – 1 = –1 ,平方的结果竟然是-1,如此荒谬!正确的写法是将参数加上括弧

#define SQUARE(x) (x)*(x)

相关文章: