为可变参数宏的元素添加前缀

时间:2011-04-27 05:58:33

标签: c++ c macros variadic-functions

我正在处理morphing C++ into Javascript,我想编写一个执行以下操作的宏function

function (x, y, z, ...)
to
[=] (var a, var b, var x, var y, var z, ...) -> Object

基本上就是:

function() -> "[=] (var a, var b) -> Object"
function(x) -> "[=] (var a, var b, var x) -> Object"
function(x, y) -> "[=] (var a, var b, var x, var y) -> Object"
...

它不一定是可变参数,如果它可以适用于适合我的固定数量的元素。此外,如果需要编译器扩展,我很擅长。

有关信息,我当前的宏是以下

#define function(...) [=] (var a, var b, ##__VA_ARGS__) -> Object

我试图寻找宏观技巧,但我找不到符合我需要的东西。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以查看P99。它使用C99的可变宏来展开所有类型的代码。

答案 1 :(得分:0)

使用Boost preprocessor库可以做些什么是可怕的。它甚至可以处理@!