C 如何创建调用变量arg函数的函数?
可能重复:C 如何创建调用变量arg函数的函数?,c,C,可能重复: 我需要将所有调用C API的函数放在一个单独的源文件单元中。这是由于定义干扰了其他代码。因此,要将可能发生干扰的代码分开 无论如何,大多数函数都是例如int function2(int),所以我只是在单独的文件中实现,如下所示: int XXfunction1(int val) { return function(val) } extern int function2(int, ...) 但我也有一些带有可变参数的函数,如下所示: int XXfunction1(int val
我需要将所有调用C API的函数放在一个单独的源文件单元中。这是由于定义干扰了其他代码。因此,要将可能发生干扰的代码分开 无论如何,大多数函数都是例如int function2(int),所以我只是在单独的文件中实现,如下所示:
int XXfunction1(int val) { return function(val) }
extern int function2(int, ...)
但我也有一些带有可变参数的函数,如下所示:
int XXfunction1(int val) { return function(val) }
extern int function2(int, ...)
那么我如何编写自己的函数来调用它呢
这似乎不起作用:
int XXFunction2(int val, ...) {
return function2(val, ...);
}
如何编写函数?必须在XXFunction2之前声明Function2,函数才能工作。您可以做的是将函数签名保留在.h文件上,并在使用前导入它,否则C在编译XXFunction2时找不到Function2,从而导致编译错误。您需要一个可以采用可变列表的方法的“v”版本
int function2v(int val, va_list arg_list)
{
//Work directly with the va_list
}
//And to call it
int XXFunction2(int val, ...) {
int returnVal;
va_list list;
va_start(list, val);
returnVal = function2v(val, list);
va_end(list);
return returnVal;
}
这个答案与手头的问题无关。尽可能准确,但没有抓住问题的重点。