我想用另一个函数(也采用可变数量的参数)包装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
那么没有简单的方法来做你想要的.唯一的可能是解释其他参数,以根据提供的固定参数计算传递给函数的变量参数列表中必须包含的内容,将变量参数列表中的所有参数拉入单独的变量并生成一个数字可能的显式调用call
基于提取的参数的数量和类型.完全通用是不可能做到这一点的.