宏有两个问题
(1)一个是括号加的不好 而扩展的时候有优先级问题 导致扩展出的不是你想要的。比如 MUL(a,b) a*b 这里你输入MUL(4,3+2) 扩展成了4*3+2 不合你要求
所以应该改为:
#define MUL(a, b) ((a) * (b))
这样的话就可以正确的扩展成4 *(3 + 2)
解决办法,使用内联函数:
本文探讨了C/C++预处理器宏定义中存在的两大问题:一是宏展开时因括号使用不当导致的操作符优先级错误;二是自增等运算在宏替换过程中被误用两次的问题。并介绍了如何通过改进宏定义和采用内联函数来有效解决这些问题。

被折叠的 条评论
为什么被折叠?