2

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

#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))

この警告が表示されます:

警告C4003:マクロ'DEFINE_STRUCTURE'の実際のパラメーターが不足しています

しかし、私はそれがに拡大することを期待しています

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

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

4

1 に答える 1

3

置換プロセスにもう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))

関数のようなマクロを呼び出すと、引数が識別され、各引数が個別に評価され、パラメーターが評価の結果に置き換えられることを忘れないでください。

于 2012-10-31T09:09:47.030 に答える