Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将宏用作列表中的其他宏参数之一_C++_Visual C++ - Fatal编程技术网

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”的实际参数不够-->还有其他想法吗?