最简单的例子:

#define MAX(a,b) (((a)>(b))?(a):(b))

如果写成:

#define MAX(a,b) ((a>b)?a:b)

语法上也正确,但是很容易造成隐藏的错误!

因为如果当a或者b为表达式时,宏替换后的代码就跟程序员的本意不同了!

相关文章: