2011-08-12 210 views
2

可能重复:
C/C++: Passing variable number of arguments around如何创建一个函数来调用变量arg函数?

我需要把呼叫到一个C API的所有功能到一个单独的源文件单元。它是由于定义干扰其他代码。所以要保持可能的干扰代码分离。

不管怎样,大部分功能都如int函数2(INT),所以我只需要实现像这样单独的文件:

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

但我也有可变的参数,像这样的功能:

extern int function2(int, ...) 

那么我怎样才能写出我自己的函数呢?

这似乎并不工作:

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

我怎样写功能?

回答

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

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

+2

此答案与手边的问题无关。 –

+0

尽可能准确,但错过了问题的要点。 –

相关问题