2.5 可变参数列表<STDARG.H>
头文件 stdarg.h 支持带有可变参数列表的函数。这允许函数带有没有相应声明的参数。参数列表中必须至少包含一个指定的参数。可变参数用省略号(...)表示,当宏定义传递时,可以在宏定义带入代码中使用__VA_ARGS__传递。必须在函数中声明一个 va_list 类型的对象用以保存这些参数。va_start将变量初始化为一个参数列表, va_arg 用来访问这个参数列表, va_end 用来终止参数的使用。示例如下:
int foo (int a, ...)
{
va_list va;
int i, res;
va_start (va, a);
for (i = 0; i < 4; ++i)
(void) va_arg (va, int);
res = va_arg (va, int);
va_end (va);
return res;
}
int main ()
{
if (foo (5, 4, 3, 2, 1, 0))
return -1;
return 0;
}
其中,foo 为可变参函数,可变参数在 int a 之后,其功能为返回第 5 个可变参数,如上例返回 0。
|