可能重复:
C宏并在括号中使用参数
我发现这个宏观问题非常有趣.
如果以下代码定义为宏
#define MULT(x, y) x * y
并且函数调用为int z = MULT(3 + 2, 4 + 2);.期望输出为3 + 2 = 5且4 + 2 = 6且5*6为30.
但返回的输出是13.它需要3 + 2*4 + 2.因此,根据运算符的优先级,它首先计算2*4.
这是什么修复?如果像这样的小功能哪一个有效?定义功能还是使用宏?