lul*_*eta 7 c++ variadic-functions variadic-macros c++11 c++14
我有一个内联的可变参数函数,
inline int foo(...)
我需要foo()
调用一个宏(让我们称之为MACRO
),这也是可变参数.
基本上我需要foo()
将其所有输入参数传递给MACRO
.foo()
由于__VA_ARGS__
选项,重新定义另一个宏将是一个简单的解决方案,但我还需要foo()
返回一个值.
注意:我正在尝试连接已编写代码的两部分,我不允许更改它们.foo(...)
用于代码的第一部分,并MACRO
在第二部分中定义.我应该做的唯一事情是定义一个foo()
使用MACRO
而我不能,因为它们都是可变的.
创建foo
一个包含lambda的宏,该lambda返回一个值,然后调用该lambda.
#define foo(...) \
[&](auto&&...args){ \
/* do something with args, or __VA_ARGS__ */ \
MACRO(__VA_ARGS__); \
return 7; \
}(__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
现在int x = foo(a, b, c);
将调用lambda内部foo
,并在lambda内部调用宏(a, b, c)
,并返回一个值.
我很遗憾接下来维护你的代码.