【发布时间】:2014-03-27 15:06:12
【问题描述】:
我需要包装一个库函数,它可以在输入中接收可变数量的参数。 这些参数可以是不同的类型。 特别是,我得到一个标识类型的整数参数,以及一个可以是数字或字符串的参数。
我尝试过使用下面的函数,但是内部函数的参数列表不对。
int function2(int rtype, ...);
int function1(int rtype, ...){
va_list args;
va_start(args, rtype);
int stato = function2(rtype, args);
va_end(args);
return stato;
}
将此包装器与 vprintf 而不是 function2 一起使用,工作正常。
有更简洁的方法将参数的变量列表传递给函数吗?
【问题讨论】:
-
据我所知该函数需要有
v版本。 -
@chris 是正确的:如果
function2也采用...(可变参数),则不能以这种方式将va_list传递给它。这根本不可能。但是您可能会在下面看到更多使用模板的 C++ 重度解决方案的答案……或者您可以使用 C 风格的宏。
标签: c++ wrapper user-defined-functions optional-parameters