5. マクロおさらい
#define HOGE AAAAAA
HOGE // AAAAAA に置換される
#define FUNC(a, b) a b a
FUNC(X, Y) // X Y X に置換される
#define CAT(a, b) a ## b
CAT(X, Y) // トークン連結して XY に置換される
#define STRINGIZE(a) #a
STRINGIZE(HOGE) // 文字列化して"Hoge"に置換される
#define FUNC2(a, ...) a __VA_ARGS__ a
FUNC2(A, X, Y, Z) // A X, Y, Z A に置換される (可変長引数)