独り言

はてなダイアリーから移籍。独り言。

マクロ

突然ですが,

#define CAT(x,y) CAT1(x,y)
#define CAT1(x,y) x ## y

int main() {
int CAT(CAT(CAT(x, y), z), w) = 1;
printf("xyzw = %d\n", xyzw);
return 0;
}

これは普通にコンパイルできて動きます。
疑問なのは#define CAT1(x,y) x ## y
ってところ・・・・・
初めから#define CAT(x,y) x ## y
にするのと違いがいまいちわからない・・・
詳しい人助けて〜
コンパイラとかの仕様に関係でしょうか?