va_list和syslog的使用
来源:互联网 发布:项城市乡镇人口数据 编辑:程序博客网 时间:2024/04/26 11:05
一、可变参数列表的使用
c语言解决变参问题的用法总结下
1,首先在函数中定义个va_list变量
2,然后使用va_start宏初始化刚定义的va_list变量,第二个参数是第一个可变参数的前一个参数
3,使用va_arg返回可变的参数,va_arg的第二个参数是你要返回的参数的类型。
4,最后用va_end宏结束可变参数的获取,如果可变参数表中有多个参数,可依次调用va_arg获取每个参数。
顺带着看了下windows平台下的实现
va_start调用_crt_va_start
#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )
_ADDRESSOF是获取v(即可变参数的前一个参数)的地址。
_INTSIZEOF(v)是获取上述的偏移量,此时得到可变参数列表的首地址。
va_arg调用_crt_va_arg
#define _crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
计算可变参数表中下一个参数的首地址,并转换成t类型的变量。
va_end调用_crt_va_end
#define _crt_va_end(ap) ( ap = (va_list)0 )
将ap指针设置为0,防止后续的野指针情况。
二、syslog
阅读全文
0 0
- va_list和syslog的使用
- SYSLOG 的学习和使用
- 可变参数va_list的理解和使用
- syslog的使用
- syslog函数的使用
- syslog的使用
- c++中参数不定函数和va_list的使用
- 关于va_list va_start va_arg va_end 的使用和原理
- va_list va_start va_end的使用和原理(未完)
- va_list,va_start,va_arg,va_copy和va_end的使用
- iOS 中的 va_list\va_arg\va_start和va_end的使用
- syslog和getopt_long_only的使用和void *指针强制转换
- syslog-ng安装和使用
- sprintf,vsprintf,va_list的使用!
- va_start、va_end、va_list的使用
- va_start、va_end、va_list的使用
- va_list va_start va_end的使用
- va_list、va_start、va_end的使用
- G: Query on a string
- 图论小知识
- python学习第一天
- 4G虚拟内存图
- numpy.tile¶
- va_list和syslog的使用
- 牛客 题库 若MyClass是一个类名,其有如下语句序列:
- 全文检索工具lucene、solr的区别以及MongoDB的全文检索
- hdu 1513 Palindrome (滚动数组处理回文串)
- K
- EDA与VHDL作业(1)
- Hibernate 级联操作cascade及inverse
- 如何在安卓上显示复杂动画
- H: Skiing