C++ 如何将宏用作列表中的其他宏参数之一
下面是一个虚拟示例:C++ 如何将宏用作列表中的其他宏参数之一,c++,visual-c++,C++,Visual C++,下面是一个虚拟示例: #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 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)
如何定义宏来实现这一点?您需要在替换过程中再添加一个步骤
#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))
请记住:在调用函数(如宏)时,会识别参数,然后分别计算每个参数,然后用计算结果替换参数。如果您可以说明,您想实现什么,这会更容易些?在这里,除了
a
@iammilind之外,很难理解参数的作用是什么:为什么要关闭它?只要稍加编辑,它就可以变成一个好问题。你是说#define_STRUCTURE2(Result,Structure,x)define_STRUCTURE2(Result,Structure,x)
?嗨,阿瓦卡尔,同样的警告:“警告C4003:宏“define_Structure”的实际参数不够-->还有其他想法吗?