rub*_*buc 13 c macros parentheses c-preprocessor
例
#define Echo(a) a
#define Echo(a) (a)
Run Code Online (Sandbox Code Playgroud)
我意识到这里可能没有显着差异,但为什么你想要a
在宏体内包括括号内?它是如何改变它的?
cni*_*tar 14
假设你有
#define mul(x, y) x * y
Run Code Online (Sandbox Code Playgroud)
如果我说:
mul(a + 5, 6); /* a + 5 * 6 */
Run Code Online (Sandbox Code Playgroud)
现在,如果我轻松改变宏:
#define mul(x, y) ((x) * (y))
mul(a + 5, 6); /* ((a + 5) * (6)) */
Run Code Online (Sandbox Code Playgroud)
请记住,不会评估参数或任何内容,只会执行文本替换.
有关在括号中包含整个宏的说明,请参阅Nate CK发布的链接.