va_list只能在函数中使用,不能作为参数传递或赋值给另一个变量。可以将va_list ap2声明为指针类型,使用va_copy()函数将ap复制到ap2指向的内存地址中,即可解决该问题。以下为示例代码:
void func(int arg1, ...) { va_list ap, ap2; va_start(ap, arg1); int arg2 = va_arg(ap, int); va_copy(ap2, ap); // 对ap和ap2分别使用va_arg()等操作 va_end(ap); va_end(ap2); }