繁体   English   中英

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

Add prefix to elements of a variadic macro

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在 将 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

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

谢谢!

2 个回复

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

你可以用Boost 预处理器库做什么是可怕的。 它甚至可以处理@!

1 为每个可变参数模板参数添加前缀

我有以下代码: 事实证明,在foo function 内部,我想在每个 arg 的开头添加一些常量前缀: 这可以编译,但是此代码在其 state 中是否有效? 这不再是完美的转发,对吧? 我认为酒吧 function 将始终使用右值参数调用。 假设operator+是为 Args 和 prefix ...

2 可变参数宏

我遇到了涉及可变参数宏的代码,我想知道这意味着什么 现在有这样的课 我想知道宏有什么作用? 更新:由于这个问题给人的印象是我没有张贴宏的全部内容,所以我对此收到了很多反对意见。 宏仅此而已。 我希望有。 这个问题与此有关。 宏实际上只是在(...)之后结束 ...

3 可变参数宏

我在下面定义了两个可变参数宏用于调试打印。 第二个是不仅显示消息,而且还显示第一个参数的错误代码的人。 使用它们,我编写了以下代码。 由于MYTRACE_ERR(err);不能编译此代码MYTRACE_ERR(err); 变为宏使用错误,但MYTRACE(); 不是。 为 ...

4 可变参数宏参数

我有一个断言宏,如下所示: MyLogFunction也是可变参数模板: 除了我不想在assert调用中插入其他信息的情况之外,其他所有内容都运行良好。 所以这很好用: 但这不是: 我相信有一种方法可以处理以下情况:没有可变参数args传递到宏调用中,并且有 ...

5 在可变参数宏中指向每个宏的每个参数前缀

假设我有这些以ATTRIB_为前缀的宏 我希望能够使用可变参数宏,该宏可以解压缩每个给定参数,然后在其ATTRIB_加上ATTRIB_以获得属性宏的全名,以便扩展该宏: 可以用作: 结果将等于: 好像使用了( 除了较短 ): 请注意,这不是此宏的实际用法。 ...

7 可变参数宏扩展

我想知道有什么方法可以选择性地调用C VARIADIC MACRO。 首先,让我展示一些我想实现的代码: 我在VC11,GCC4.8和Clang 3.4中进行了测试,但是没有一个可以按照我的意愿进行编译。 是的,我想通过参数的数量来调用宏,但是宏扩展为: 没有招数吗? ...

8 使用可变参数的宏

请让我知道是否有办法在宏函数中使用变量参数并使下面的宏代码工作。 换句话说,有什么方法可以在 va_start 中使用局部变量。 ...

9 可以扩展宏可变参数吗?

我有很多自定义属性(通过使用 clang annotate,如果你问),写起来很烦人 我可以设计一个宏,例如MyAttr(...) ,如果我使用MyAttr(a,b,c) ,它会扩展为__attribute(a)__ __attribute(b)__ __attribute(c)__吗? ...

10 如何使用可变参数宏?

我正在尝试使用可变参数宏。 我希望从MY_TOP_PRINTF宏调用PRINTF宏。 1.我遇到编译错误。 2.如果我删除编译错误,那只是打印第一个参数。 我的预期结果是Inside TOP_PRINT dog here 4 错误: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM