3

解压可变参数宏的任何技巧?例如,

#define READ(...)意思是一一阅读论据

READ(a, b, c)将被解包到read(a); read(b); read(c)

4

1 回答 1

2

您可以使用此处描述的“配对滑动参数”宏技术来实现它: 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 中需要。

于 2019-10-01T12:50:38.827 回答