Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.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++_Variadic Macros - Fatal编程技术网

C++ 有没有解压可变宏的技巧?

C++ 有没有解压可变宏的技巧?,c++,variadic-macros,C++,Variadic Macros,有没有解压可变宏的技巧?比如说, #define READ(…)表示逐个读取参数 READ(a,b,c)将被解包为READ(a);改为(b);阅读(c)您可以使用“成对滑动参数”宏技术实现它,如下所述: \u EXPAND(args)仅在MSVC中需要。为什么首先要使用宏?为什么变量模板参数不可以很容易做到呢?同意。这对于可变模板来说是微不足道的。如果宏是绝对必要的,那么每个宏都有类似于BOOST\u PP\u SEQ\u的内容。它是定义函数或类的宏。 #define _EXPAND(args

有没有解压可变宏的技巧?比如说,

#define READ(…)
表示逐个读取参数


READ(a,b,c)
将被解包为
READ(a);改为(b);阅读(c)

您可以使用“成对滑动参数”宏技术实现它,如下所述:


\u EXPAND(args)
仅在MSVC中需要。

为什么首先要使用宏?为什么变量模板参数不可以很容易做到呢?同意。这对于可变模板来说是微不足道的。如果宏是绝对必要的,那么每个宏都有类似于
BOOST\u PP\u SEQ\u的内容。它是定义函数或类的宏。
#define _EXPAND(args) args
#define READ1(a) read(a);
#define READ2(a,b) read(a); read(b);
#define READ3(a,b,c) read(a); read(b); read(c);
#define GETREAD(_1,_2,_3, READN,...) READN
#define READ(...) _EXPAND(GETREAD(__VA_ARGS__, READ3, READ2, READ1)(__VA_ARGS__))