2
#include <stdio.h>
#define next(x) x + 1
#define prev(x) x - 1
#define mult(x,y) x * y
int main(void) {
int a = 3, b = 4;
printf("%d\n", mult(next(a), prev(b)));
return 0;
}
mult(next(3),prev(4))
擴展到mult(3+1, 4-1)
這是12,但是答案是6宏定義功能
這是爲什麼?
嘗試改變'#定義下一個(x)x + 1#定義下一個(X)(X + 1)和分組做相同的()' – Cyclonecode
您可能需要遵循的標準做法在ALL_CAPS中命名宏標識符,使其在代碼中顯示它是* special *。 – pmg