1. ホーム
  2. c

[解決済み】バリアディックマクロの作り方(引数の数が可変の場合)

2022-04-10 01:01:43

質問

C言語で、特定の数ではなく、任意の数のパラメータを受け付けるマクロを書きたい。

の例です。

#define macro( X )  something_complicated( whatever( X ) )

ここで X は任意の数のパラメータ

これが必要な理由は whatever はオーバーロードされ、2つまたは4つのパラメータで呼び出すことができます。

マクロを2回定義しようとしましたが、2回目の定義で1回目の定義が上書きされてしまいました!

私が使用しているコンパイラはg++(もっと言えば、mingw)です。

どのように解決するのですか?

C99の方法、VC++コンパイラでもサポートされています。

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