这些结构和函数,都是用在形参可变的函数中.
va_list : 就是指个数可变形参列表,是不固定的哦
va_start: 使指向va_list的指针指向va_list的第一个可选参数
va_end : 使指向va_list的指针为NULL
va_arg : 返回参数列表中的当前参数并使argp指向参数列表中的下一个参数
具体操作见以下两实例
1.
int dev_set_name(struct device *dev, const char *fmt, ...)
{
va_list vargs;
int err;
va_start(vargs, fmt);
err = kobject_set_name_vargs(&dev->kobj, fmt, vargs);
va_end(vargs);
return err;
}
2.
int demo( char, ... );
void
main( void )
{
demo("DEMO", "This", "is", "a", "demo!",
"");
}
int demo( char msg, ...
)
{
va_list
argp;
int argno = 0;
char para;
va_start( argp, msg
);
while (1)
{
para = va_arg( argp,
char);
if ( strcmp( para, "") == 0
)
break;
printf("Parameter #%d is:
%s/n", argno, para);
argno++;
}
va_end( argp );
return 0;
}