解压缩可变参数宏的任何技巧?

时间:2014-05-22 20:45:57

标签: c++ variadic-macros

解压变量宏的任何技巧?例如,

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

READ(a, b, c)将解压缩至read(a); read(b); read(c)

2 个答案:

答案 0 :(得分:1)

  1. 好习惯是在宏名称中使用仅大字母 ...在您的问题中,read看起来像一个函数。

  2. This answer may be the answer to your question

答案 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中需要。