下面的宏会带来问题吗?
#define sq(x) x*x
如果是,那么如何以及为什么?请帮忙。
是的,它可能会带来问题。除了宏根本不尊重命名空间这个明显的事实(这意味着你不能调用其他任何东西)sq
),请尝试以下操作:
int result = sq(4) / sq(4);
你应该包围x * x
带括号,所以它变成((x) * (x))
.
另一个问题:
int a = 0;
int result = sq(++a);
这是宏的固有问题,也是首选内联函数的原因之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)