以下宏可以带来问题吗?
#define sq(x) x*x
如果是,那么如何以及为什么?请帮助.
是的,它可能会带来问题.除了明显的事实,宏根本不尊重命名空间(这意味着你不能调用任何其他东西sq),请尝试以下方法:
int result = sq(4) / sq(4);
你应该x * x用括号括起来,这样它就变成了((x) * (x)).
另一个问题:
int a = 0;
int result = sq(++a);
这是宏的固有问题,并且是内联函数应该是首选的一个原因.
| 归档时间: | 
 | 
| 查看次数: | 685 次 | 
| 最近记录: |