例子
#define Echo(a) a
#define Echo(a) (a)
我知道这里可能没有显著的区别,但是为什么要在宏体中的括号中包含
a
?它是如何改变的? 最佳答案
假设你有
#define mul(x, y) x * y
如果我说:
mul(a + 5, 6); /* a + 5 * 6 */
现在,如果我滑动更改宏:
#define mul(x, y) ((x) * (y))
mul(a + 5, 6); /* ((a + 5) * (6)) */
请记住,参数不会被计算或执行任何操作,只执行文本替换。
编辑
有关将整个宏置于括号中的说明,请参见the link发布的Nate C-K。