当前位置 : 主页 > 编程语言 > c++ >

用C包装变量参数函数

来源:互联网 收集:自由互联 发布时间:2021-06-23
我想用另一个函数(也采用可变数量的参数)包装xmlrpc“call”函数(它接受可变数量的参数).我想简单地将传递给我的包装函数的可变数量的参数转发到xmlrpc“call”函数. 我知道如何使用
我想用另一个函数(也采用可变数量的参数)包装xmlrpc“call”函数(它接受可变数量的参数).我想简单地将传递给我的包装函数的可变数量的参数转发到xmlrpc“call”函数.
我知道如何使用va_start和va_arg,但我真的不关心传入的值,我只是想将它们转发到包装函数.
这可能吗?

我要包装的函数的规范是

call(const char* url, const char* function, const char* paramSpec, void* result, ...);

我的包装器处理前三个参数和引用结果,它只需要将其额外的参数转发给调用函数

不幸的是,没有办法提供一个函数的完美转发,该函数通过…语法获取可变数量的参数.这就是为什么在采用va_list的函数方面实现所有公共变量参数列表函数并为任何客户端代码提供两个接口的最佳实践.这就是标准库中有printf和vprintf,sprintf和vsprintf等的原因.

如果没有vcall或类似的va_list,那么没有简单的方法来做你想要的.唯一的可能是解释其他参数,以根据提供的固定参数计算传递给函数的变量参数列表中必须包含的内容,将变量参数列表中的所有参数拉入单独的变量并生成一个数字根据提取的参数的数量和类型,可能显式调用调用.完全通用是不可能做到这一点的.

网友评论