C言語(C++)で可変個数引数のマクロ定義をするには?
以下のように記述する。...
と__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);