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

您需要在替换过程中再添加一个步骤。

#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 回答