头文件:stdarg.h
#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
//将sizeof()转换位相应int类型对应的字节数,&~先当与除法,(+sizeof(int)-1)是为了补字节,除(sizeof(int)-1)是为了防止全置0;例:n为char,1+4-1=4(&~)4-1=3->4否则4&~4=0
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
//计算第一个可变参数地址,v为省略号前一个变量名(地址)
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
//计算下一个变量地址,ap已经指向下一个可变参地址,但宏返回当前可变参地址
#define va_end(ap) ( ap = (va_list)0 )
#define va_end(ap) ( ap = (va_list)0 )
// 将ap置空