扩展/重组宏元组
Expanding / Recombining macro tuple
我正在尝试使用 C++ 中的宏执行如下操作:
#define ESC(...) __VA_ARGS__
#define f1(a,b,c) {a:b:c}
#define f2(ab,c) ( ESC ab,c )
#define f3(ab,c) f1( ESC f2( ab, c ) )
f2((myA,myB),myC) // RESULT: (myA,myB,myC)
f3((myA,myB),myC) // DESIRED RESULT: {myA:myB:myC}
换句话说,我有一组由元组 (ab) 包装的参数以及一个未包装的参数 (c),我需要将它们传递给另一个采用参数 (a,b) 的宏函数,C)。
上面的宏 f2 从 (ab,c) 给了我 (a,b,c),但是从那里我无法使用 (a,b,c) 元组来调用 f1。显然我没有正确地解决这个问题。有人可以指出我更好的方法吗?
我可以在此解决方案中使用 BOOST_PP,如果这样可以使事情变得更容易的话。
提前致谢!
#define fst(first, second) first
#define snd(first, second) second
#define f3(ab,c) f1( fst ab, snd ab, c )
我正在尝试使用 C++ 中的宏执行如下操作:
#define ESC(...) __VA_ARGS__
#define f1(a,b,c) {a:b:c}
#define f2(ab,c) ( ESC ab,c )
#define f3(ab,c) f1( ESC f2( ab, c ) )
f2((myA,myB),myC) // RESULT: (myA,myB,myC)
f3((myA,myB),myC) // DESIRED RESULT: {myA:myB:myC}
换句话说,我有一组由元组 (ab) 包装的参数以及一个未包装的参数 (c),我需要将它们传递给另一个采用参数 (a,b) 的宏函数,C)。
上面的宏 f2 从 (ab,c) 给了我 (a,b,c),但是从那里我无法使用 (a,b,c) 元组来调用 f1。显然我没有正确地解决这个问题。有人可以指出我更好的方法吗?
我可以在此解决方案中使用 BOOST_PP,如果这样可以使事情变得更容易的话。
提前致谢!
#define fst(first, second) first
#define snd(first, second) second
#define f3(ab,c) f1( fst ab, snd ab, c )