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