C(gcc)で可変長マクロで引数なしを受け取るには ##__VAR_ARGS__

2015-03-04

Cで可変長マクロ

#define LOG(fmt, ...)  printf(fmt, __VA_ARGS__)

を作ると、可変部分は1個以上値を渡さないといけない:

LOG("FOOBAR\n");  // <= コンパイルエラー

gccだと ##__VA_ARGS__ というのを使えば、0個の場合でも受け取れる:

#define LOG(fmt, ...)  printf(fmt, ##__VA_ARGS__)