Cで可変長マクロ

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

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

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

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

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