va_list
键入以保存有关变量参数的信息
va_start
初始化变量参数列表
初始化ap以检索参数paramN后面的附加参数。
调用va_start的函数在返回之前也应调用va_end。
参数不能是引用类型,也不能是与传递没有参数的参数时产生的类型不兼容的类型。
/* va_start example */
#include <stdio.h> /* printf */
#include <stdarg.h> /* va_list, va_start, va_arg, va_end */
void PrintFloats (int n, ...)
{
int i;
double val;
printf ("Printing floats:");
va_list vl;
va_start(vl,n);
for (i=0;i<n;i++)
{
val=va_arg(vl,double);
printf (" [%.2f]",val);
}
va_end(vl);
printf ("\n");
}
int main ()
{
PrintFloats (3,3.14159,2.71828,1.41421);
return 0;
}
va_end
定义:
结束使用变量参数列表
执行适当的操作,以便于使用va_list对象ap检索其附加参数的函数正常返回。
无论何时从该函数调用va_start,都应在函数返回之前调用该宏。
返回值:
none
实例:
/* va_end example */
#include <stdio.h> /* puts */
#include <stdarg.h> /* va_list, va_start, va_arg, va_end */
void PrintLines (char* first, ...)
{
char* str;
va_list vl;
str=first;
va_start(vl,first);
do {
puts(str);
str=va_arg(vl,char*);
} while (str!=NULL);
va_end(vl);
}
int main ()
{
PrintLines ("First","Second","Third","Fourth",NULL);
return 0;
}