如何创建一个函数来调用变量arg函数?

时间:2011-08-12 19:03:20

标签: c

  

可能重复:
  C/C++: Passing variable number of arguments around

我需要将调用的所有函数放入一个独立的源文件单元中。这是由于定义了干扰其他代码。所以要将可能干扰的代码分开。

无论如何,大多数函数都是例如int function2(int)所以我只是在这样的单独文件中实现:

int XXfunction1(int val) { return function(val) }

但我也有像这样的可变参数的函数:

extern int function2(int, ...)

那么如何编写自己的函数呢?

这似乎不起作用:

int XXFunction2(int val, ...) {
   return function2(val, ...);
}

我该如何编写这个函数?

2 个答案:

答案 0 :(得分:4)

您需要一个可以采用可变列表的方法的“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;
}

答案 1 :(得分:-1)

必须在XXFunction2之前声明Function2才能使其工作。你可以做的只是在.h文件上的函数签名并在使用之前导入它,否则C在编译XXFunction2时找不到Function2,导致编译错误。