va_list va_start va_arg va_end解析
来源:互联网 发布:maven构建java项目 编辑:程序博客网 时间:2024/05/22 06:38
最近在学野火的M3板子,发现串口的发送程序发现有va_list va_list va_start va_arg这些东东,以前没见到过啊。于是乎上网百度了一番,可得到出一下结论:
va_list va_start va_arg va_end这些是用在C函数的参数不确定时会用到的如printf()函数。在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) //第一个可选参数地址#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) //下一个参数地址#define va_end(ap) ( ap = (va_list)0 ) // 将指针置为无效
实际上va_list va_start va_arg va_end的作用就是将可变参数(即参数个数可变)一个一个的取出来。例:int fun1(int i,...) //此例子中在i变量后面出现的参数都是可变参数{
va_list arg_ptr;va_start( arg_ptr ,i);//得到第一个可变参数的地址,即i后一个参数的地址va_arg( arg_ptr ,数据类型); //得到第一个参数的值,并将值转化为你想要的数据类型//然后arg_ptr指向下一个可变参数的地址va_end(arg_ptr); //置空
}
int fun2(int i,int y...) //此例子中在i变量后面出现的参数都是可变参数{
va_list arg_ptr;va_start( arg_ptr ,y); //得到第一个可变参数的地址,即y后一个参数的地址va_arg( arg_ptr ,数据类型); //得到第一个参数的值,并将值转化为你想要的数据类型//然后arg_ptr指向下一个可变参数的地址va_end(arg_ptr); //置空
}
用这两个函数只是想说明那些是可变参数,可变参数时函数中用"..."表示的参数(具体看va_start()函数的参数),如果没看明白我上面的解释,下面给出两个博客的地址你懂的1 2
- va_list va_start va_arg va_end解析
- C语言va_list,va_start,va_arg,va_end解析
- VA_LIST VA_START VA_ARG VA_END
- va_list、va_start、va_arg、va_end
- va_list va_start va_arg va_end
- va_list、va_start、va_arg、va_end
- va_list, va_start, va_end, va_arg
- va_list、va_start、va_arg、va_end
- va_list & va_start & va_arg & va_end
- va_list、va_start、va_arg、va_end
- va_list/va_start/va_arg/va_end
- va_start/va_arg/va_end/va_list
- va_list va_start va_arg va_end 详解
- va_list(),va_start(),va_arg(),va_end()
- va_list , va_start , va_arg , va_end详解
- va_list,va_start,va_arg,va_end详解
- va_list,va_start, va_arg,va_end用法
- va_list、va_start、va_arg、va_end用法
- css+div+js 选项卡效果 简洁
- CSS3特效之过度transition
- C关键字的解析
- 程序设计竞赛之只读取一行字符串
- QT5.0.1在WIN7下 出现QApplication: No such file or directory 问题的解决办法
- va_list va_start va_arg va_end解析
- 密码发生器 在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或
- wp7激活码注册教程
- Problem A Jason的特殊爱好
- CSS3特效之转换transform
- WP7新手必知 注册一个可用的Windows Live ID
- linux API函数总结
- POJ 1308 hdu 1325 Is It A Tree?【并查集+入度 判断一个有向图是树】
- Redis数据备份与恢复