c-マクロを他のマクロパラメーターリストの1つとして使用する方法

ダミーの例を次に示します。

#define DEFINE_STRUCTURE(Result, Structure, a, b, c)  int a;
#define MEMBER_INT(name, width)                       Int, name, width

私がやっているとき

DEFINE_STRUCTURE(Result, Structure,  MEMBER_INT(b, c))

私はこの警告を受け取ります:

warning C4003: not enough actual parameters for macro ‘DEFINE_STRUCTURE’

しかし、私はそれが

DEFINE_STRUCTURE(Result, Structure,  Int, b, c)

それを達成するためにどのようにマクロを定義できますか?

ベストアンサー
置換プロセスにもう1ステップ追加する必要があります。

#define DEFINE_STRUCTURE(Result, Structure, a, b, c)  int a;
#define MEMBER_INT(name, width)                       Int, name, width

#define DEFINE_STRUCTURE2(Result, Structure, x) DEFINE_STRUCTURE(Result, Structure, x)
DEFINE_STRUCTURE2(Result, Structure,  MEMBER_INT(b, c))

要確認:関数のようなマクロの呼び出しでは、引数が識別され、各引数が個別に評価され、パラメーターが評価の結果に置き換えられます。

転載記事の出典を記入してください: c-マクロを他のマクロパラメーターリストの1つとして使用する方法 - コードログ