C语言va_list,va_start,va_arg,va_end
需要注意:
在C语言中使用可变参数不利于编译器的语法检查,在使用时要慎重。
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h> /*define va_list,va_start,va_arg and va_end.*/
void test_va(int a,...){
va_list p;
if(a == 1){
int b = 0;
va_start(p,a);
b = va_arg(p,int);
printf("%d\n",b);
va_end(p);
} else if(a == 2) {
char c;
int d = 0;
va_start(p,a);
c = va_arg(p,int);
printf("%c\n",c);
d = va_arg(p,int);
printf("%d\n",d);
va_end(p);
} else if(a == 0) {
printf("%d\n",a);
} else {
printf("The first parameter should be 0, 1 or 2.\n");
}
}
int main(int argc, char * argv){
test_va(0);
test_va(1,300);
test_va(2,'m',500);
return 0;
}