keil C51可变参数讲解,自定义允许访问可变长度参数列表的函数。MASQENO
举例说明
示例代码1
void Test int a
va list ap
va start( ap, a
b= va arg( ap, int )
va end( ap )
printf(%d, a, b)
1.首先定义一个 va list型的变量ap,也就是char
2. va star(ap,a)宏替换之后就是ap=(a_lst&a+ sizeof(a);
首先取a的地址,即第一个固定参数的地址,然后强制类
stdarg宏:
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件,它是标准库的一部分。
这个头文件声明的一个va_list的类型,和三个宏va_start,va_arg,va_end。我们可以生明一个va_list类型的变量,配合三个宏使用。
va_start(arg, last have name arg);
初始化之后,arg将指向第一个无名参数。
va_arg(arg, next arg type);
va_arg将会返回当前的arg的va_list变量所指向