#include <stdio.h>
#define MULTIPLY(a, b) a * b
int main() {
int result = MULTIPLY(2 + 3, 4 + 5);
printf("Result: %d\n", result);
return 0;
}
在main函数中,我
们使用MULTIPLY(2 + 3, 4 + 5)
来计算表达式(2 + 3) * (4 + 5)
的结果。然而,由于宏展开时没有括号,展开后的代码如下:
int result = 2 + 3 * 4 + 5;
为了避免这种意外结果,可以使用括号来明确指定宏展开的优先级,例如:
#define MULTIPLY(a, b) ((a) * (b))
通过使用括号,宏展开后的代码将是int result = ((2 + 3) * (4 + 5));
,从而得到预期的结果。