【发布时间】:2012-12-31 05:02:57
【问题描述】:
如何将参数反转为可变参数宏?例如,我想
#define REVERSE(...) ???
REVERSE(A,B,C) // expands to C,B,A
我的目标是将前后参数分开:
#define APPLY(FUN,...) FUN(__VA_ARGS__)
#define FRONT(FIRST,...) FIRST
#define REST(FIRST,...) __VA_ARGS__
#define MOST(...) APPLY(REVERSE,APPLY(REST,REVERSE(__VA_ARGS__)))
#define BACK(...) APPLY(FRONT,REVERSE_ARGUMENTS(__VA_ARGS__))
FRONT(A,B,C) // expands to A
REST(A,B,C) // expands to B,C
MOST(A,B,C) // expands to A,B
BACK(A,B,C) // expands to C
【问题讨论】:
标签: c c-preprocessor c99 variadic-macros