例
#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。
关于c - C宏和括号中参数的使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41825683/