举个栗子:
#include <stdio.h>
#define MOD(x, y) x * y
#define MOD1(x, y) x % y
// 宏定义只替换不组合
int main(int argc, char const *argv[]) {
int x = 2, y = 2;
printf("%d\n", MOD(x, y + 2)); // 6
int a = 13, b = 94;
printf("%d\n", MOD1(b, a + 4)); // 7
return 0;
}
在宏定义展开的时候只替换本身的那部分,如在MOD
中只替换MOD(x, y)
而不会将y+2
的方式去组合起来再去咱开宏定义,所以结果是6。同理在MOD1
中是直接宏定义替换成MOD1(b, a)
然后再+ 4
。也就是:
MOD1(b, a + 4) = MOD1(b, a) + 4;