3

再帰マクロを使用して、必要な数の関数引数を書き込むことは可能ですか? 例えば:

void foo( const char (&row1)[3] , const char (&row2)[3] , const char (&row3)[3] )
{
}

void foo( const char (&row1)[3] , const char (&row2)[3] , const char (&row3)[3] , const char (&row4)[3] , const char (&row5)[3] , const char (&row6)[3] )
{
}

このような問題を解決するために可変個引数テンプレートが導入されたことは認識していますが、C++98 ATM に限定されています。

4

3 に答える 3

5

事前処理ツールキット全体を提供するboost::preprocessorライブラリを見ることができます。繰り返しや再帰を含むプリプロセッサ メタプログラミング ツールを提供します。

この回答で例を見ることができます。

于 2013-09-13T18:16:26.823 に答える
0

従来、開発者は一連のマクロを作成し、それぞれに異なる数の引数を指定していました。

#define foo1(arg1)
#define foo2(arg1, arg2)
#define foo3(arg1, arg2, arg3)
...
于 2013-09-13T18:25:41.147 に答える
0

マクロ展開は、展開中のマクロの名前を展開しないため、マクロを再帰的にすることはできません。C++11 では、 を使用して可変数の引数を持つマクロの概念が導入されました__VA_ARGS__が、私はそれについてあまり知りません。(マクロはほとんど使っていません。)

于 2013-09-13T18:20:37.007 に答える