如何从VA_ARGS中提取[0...N]个参数,假设N小于等于参数数量。
示例:
#define MY_SEQ r0, r1, r2, r3, r4, r5, r6, r7, \
r8, r9, r10, r11, r12, r13, r14, r15
#define EXTRACT_N(n, SEQ) {... magic ...}
...
EXTRACT_N(5, (MY_SEQ()));
should expand to:
{r0, r1, r2, r3, r4};
可以假设序列元素的形式为WHATEVER##N,其中N是第N个元素。
我正在寻找一些好的解决方案来解决这个问题,而不使用BOOST,例如,我想了解如何完成它。
我使用迭代方法完成了它,但我想知道是否有其他方法可以完成它。 以下是我的实现方式:
#define EXTRACT_1(t0) t0
#define EXTRACT_2(t0, t1) EXTRACT_1(t0),t1
#define EXTRACT_3(t0, t1, t2) EXTRACT_2(t0, t1),t2
#define EXTRACT_4(t0, t1, t2, t3) EXTRACT_3(t0, t1, t2),t3
...
gpp
,它似乎对cpp
友好)。 - Basile Starynkevitch#include
的头文件中生成#define EXTRACTTHEM1
...#define EXTRACTTHEM100
即可。这就足够了... - Basile Starynkevitch