我需要将调用的所有函数放入一个独立的源文件单元中。这是由于定义了干扰其他代码。所以要将可能干扰的代码分开。
无论如何,大多数函数都是例如int function2(int)所以我只是在这样的单独文件中实现:
int XXfunction1(int val) { return function(val) }
但我也有像这样的可变参数的函数:
extern int function2(int, ...)
那么如何编写自己的函数呢?
这似乎不起作用:
int XXFunction2(int val, ...) {
return function2(val, ...);
}
我该如何编写这个函数?
答案 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,导致编译错误。