マクロの二段階展開について教えてください。
プリプロセッサに詳しい方にお聞きしたいのですが、ここの
このコードがどういう順番で展開されるために、NGなのか
#define str(s) #s ①
#define foo 4 ②
str(foo);
下ではなぜOKなのか
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
私には理解できませんでした。
#define JOIN(x, y) JOIN_AGAIN(x, y)
#define JOIN_AGAIN(x, y) x ## y
上ののコードもわかりませんでした。