1. 类似printf函数的实现原理
1. int printf(const char *format, ...); format是固定参数,是参数1 … 是可变参数 2. 相关宏
(1)va_list 就是一个char*指针, 即:typedef char * va_list; (2)va_start宏 ,#define va_start(list,param1) (list = (va_list)¶m1+ sizeof(param1)) 获取可变参数列表的第一个参数的地址(list是类型为va_list的指针,param1是固定参数)
(3)va_arg宏,#define va_arg(list,mode) ((mode *) (list += sizeof(mode)))[-1] 获取可变参数的当前参数的值,返回指定类型并将指针指向下一参数(mode参数描述了当前参数的类型)
(4)va_end宏 va_end(list) ( list = (va_list)0 )
清空va_list可变参数列表,防止出现野指针
标签:va,代码,打印,list,参数,mode,param1,日志,指针 From: https://www.cnblogs.com/dkhlaojogo/p/16974516.html