繁体   English   中英

Variadic函数调用可变参数宏

[英]Variadic function calling a variadic macro

我有一个内联可变参数函数
inline int foo(...)
我需要foo()来调用一个宏(让我们称之为MACRO ),这也是可变的。
基本上我需要foo()将其所有输入参数传递给MACRO 由于__VA_ARGS__选项,将foo()重新定义为另一个宏将是一个简单的解决方案,但我还需要foo()来返回一个值。
注意:我正在尝试连接已编写代码的两部分,我不允许更改它们。 foo(...)用于代码的第一部分, MACRO用于第二部分。 我唯一要做的就是定义一个使用MACROfoo()而我不能,因为它们都是可变参数。

使foo成为一个包含lambda的宏,该lambda返回一个值,然后调用该lambda。

#define foo(...) \
  [&](auto&&...args){ \
    /* do something with args, or __VA_ARGS__ */ \
    MACRO(__VA_ARGS__); \
    return 7; \
  }(__VA_ARGS__)

now int x = foo(a, b, c); 将在foo调用lambda,并在lambda中调用(a, b, c)上的宏,并返回一个值。

我很遗憾接下来维护你的代码。

你问的是不可能的。

可变参数函数的参数在运行时确定,但宏在编译时扩展。

暂无
暂无

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

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