解压变量宏的任何技巧?例如,
#define READ(...)
表示逐个读取参数
READ(a, b, c)
将解压缩至read(a); read(b); read(c)
答案 0 :(得分:1)
好习惯是在宏名称中使用仅大字母 ...在您的问题中,read
看起来像一个函数。
答案 1 :(得分:0)
您可以使用“成对的滑动参数”宏技术实现此目标,如下所述: https://codecraft.co/2014/11/25/variadic-macros-tricks
#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__))
_EXPAND(args)
仅在MSVC中需要。