我正在将C ++转换为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

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

谢谢!

#1楼 票数:1

您可以看一下P99 从C99开始,它使用可变参数宏来进行各种代码展开。

#2楼 票数:0

使用Boost预处理程序库可以做的事情令人恐惧。 它甚至可以处理那个@!

  ask by Vjeux translate from so

未解决问题?本站智能推荐:

2回复

具有函数重载的可变参数宏

我有一个功能: 我有一个宏: 所以我可以有这样的事情: 扩展到 有时我有这样的事情: 应该扩展为 到目前为止,该宏工作正常。 但是有时我会有这样的事情: 应该扩展为 但这是行不通的。 我收到一个错误,“宏FOO需要3个参数,
2回复

如何将参数传递给可变参数宏?

我有一个可变函数: 它应该像这样调用: 但是,我想编写一个可变参数宏,以便更容易调用: 这样开发人员可以使用以下方法调用它: 代替 但是,这两种方法都给我一个编译器错误。 这可能还是我在浪费时间? 我以前从未使用过变量函数,所以不确定。 我的功
1回复

访问冲突可变参数宏/函数C ++

我正在尝试使用一些可变参数宏和函数为我的项目创建一个日志记录系统,这些函数最终会在printf调用中结束。 但是,printf给我一个访问冲突错误,我不确定为什么。 因此,让我们从我的宏开始: 如您所见,如果定义了_DEBUG,则宏将解析为对Logger :: Log的调用,并传
6回复

编写一个使用传递的参数名称的可变参数宏

我想写一个变量宏,它以某种方式知道传递的参数的名称。 例如: 代码: 应产生输出 希望有人知道答案。
1回复

编写一个带有可变参数并返回值的C宏

我有一个用于在stderr上显示消息的宏,该消息显示当前文件名(来自__FILE__ )和行号(来自__LINE__ ),但也允许使用自定义消息的可选格式和可变参数列表。 如果指定了自定义消息,则编译器必须做得相当不错,可以警告有关不正确的printf参数的警告。 可以通过以下方式来调用
2回复

使用可变参数宏和函数时,“未初始化的值是由堆栈分配创建的”

我有以下程序http://ideone.com/1RPs8E 。 它使用可变参数函数tlog,它将在日志文件中打印一行。 它接收打印行的级别,文件名,行和调试信息的函数以及printf的格式和参数列表。 我还使用一个LOGL宏来调用当前文件,行和函数的tlog函数。 还有使用
1回复

可变参数宏:如何解决“宏的实际参数过多。”

我一直在努力使我最初在Mac上构建的某些代码在Visual Studio 2008 Express下运行,并且遇到了我用于断言代码的可变参数宏的怪异问题: 宏定义为: 这一切在gcc下(在osx下)都可以正常工作,并且曾经在VS 2005下运行,但是在2008年我收到以下警告:
1回复

C ++包装带有可变参数的包装器宏?

题 我有一个方法来通过用宏替换它们来包装函数,以便我可以记录调用和返回代码。 这是一个有效的例子: 它替换的函数的宏调用函数并记录函数名称及其调用位置以及返回码。 包装任何函数使用相同的语法,只需要在宏中替换3次的函数名称。 我想要做的是创建包装器宏,其中重新定义foo的宏将