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);
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

関連コンテンツ

スポンサードリンク

Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です