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;
}

这个答案与手头的问题无关。尽可能准确,但没有抓住问题的重点。