#define INC(x) x+1
#define SQR(x) ((x)*(x))
#define CUBE(x) (SQR(x)*(x))
#define M1(x, y) x##y
#define M2(x, y) #x #y #x
#define M = 10
#define REDUCE (x, y) x - y
int main()
{
int a[M], i, j = 0, m;
#ifdef M
i = j;
#else
j = i;
#endif
i = 10* INC(j);
i = REDUCE (j, k);
i = SQR(SQR(j++));
i = CUBE(j);
i = M1(j+ k);
puts(M2(i, j));
#undef INC
i = INC(j);
#define INC
i = INCE(j);
return 0;
}
我从不使用宏,所以我很难在这里发现所有错误。我发现了一些像 M =10 -> M 10 或像 main 中缺少的 int k。但是,我不确定 i=M1(j+k) -> i=M1(j,k) 但我认为这仍然是一个错误,所以我不知道该怎么做。最后,i=INCE(j) 也许应该是 i=INC(j)?