参数是存放在栈中,从右至左存(即从左至右取)
typedefine char* va_list;
#define_INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1)) 字节以(int)对齐
#define va_start(ap, v) (ap = (va_list)&v+ _INTSIZEOF(v)) ap指向第一个参数
#define va_arg(ap,t) (*(t*)((ap+=_INTSIZEOF(t)) - _INTSIZEOF(t))) ap指向第二个参数,并返回第一个参数地址
#define va_end(ap) (ap = (va_list)0)