有没有办法实现这个?
void func2(...) {
/*
* Handle „...” parameters
*/
}
void func1(int n, ...) {
func2(...);
}
答案 0 :(得分:2)
让你的“内部”函数取一个(n初始化的)va_list
参数而不是...
并从调用者传递该列表;
如果参数具有相同(或可转换)类型,则可以使其接受数组,然后自己解析可变参数并将数组及其长度传递给被调用函数。
< / LI>答案 1 :(得分:2)
根据维基百科,这是不可能的。 http://en.wikipedia.org/wiki/Stdarg.h
可变参数函数是可以采用可变数量的函数 参数和声明用省略号代替最后一个 参数。这种功能的一个例子是printf。变量函数 必须至少有一个命名参数,因此,例如,C中不允许
char *wrong(...);
。(在C ++中,允许这样的声明,但不是很有用。)在C中,逗号必须在 省略;在C ++中,它是可选的。
所以你的void func2(...)
是非法的。