为什么M(0)和N(0)有不同的结果?#define CAT(a, b) CAT_I(a, b)
#define M_1 whatever_elseM(0); // expands to CAT(x, y)
#define N_1() whatever_elseN(0); // expands to xy
像这样的结构: int a;} Foo;#define Foo(A, B) (Foo){ A, B }Foo foo;我使用这种模式已经有一段时间了,对我来说,这是一种非常优雅的初始化结构的方法。它适用于GCC和Clang (我认为也适用于TCC ),但在一些不太知名的C编译器(如Plan 9的C编译器)中却不起作用。
关于这个话题,C标准有什