C言語(C++)で可変個数引数のマクロ定義をするには?

      2018/06/15

こんな感じで記述する。...__VA_ARGS__が可変個数に対応する。
コンパイルスイッチで無効にしたり、別メソッドを使用する場合などに使えます。

#define SPRINTF(__Dest, __Format, ...)  sprintf(__Dest, __Format, __VA_ARGS__)

使用例

#ifdef UNSAFE_API
#define SPRINTF(__Dest, __Format, ...)  sprintf(__Dest, __Format, __VA_ARGS__)
#else
#define SPRINTF(__Dest, __Format, ...)  snprintf(__Dest, 255, __Format, __VA_ARGS__)
#endif

// 呼び出しサンプル
SPRINTF(myBuffer_, "size=%dx%d\n", width, height);

 - C言語/C++