编辑:恐怕我不清楚。
我想要的是将(部分或全部)vararg列表传递给子函数,而不必传递所有vararg参数。
我做了一些研究(试验和错误)并找到了解决方案,我将其作为答案发布。
我删除了原来的问题,因为它不清楚。感谢您的评论,这帮助我找到了我的想法中的错误。
答案 0 :(得分:0)
以下是主要的测试功能。它调用一个可以获取可变数量参数的函数。该功能反过来调用子功能来完成工作。它传递参数列表,但不是通过传递参数,而是传递vararg列表的地址。然后处理此列表:
void va_test1(int n,...);
void va_test2(int n, va_list argptr);
int va_main(void)
{
va_test1(5, 1,2,3,4,5);
return(1);
}
void va_test1(int n,...)
{
va_list argptr;
va_start (argptr, n);
va_test2 (n, argptr);
va_end (argptr);
}
void va_test2(int n, va_list argptr)
{
int i;
for (i=0;i<n;i++)
printf("%d\n", va_arg( argptr, int ));
}