C语音,关于可变参数的宏定义

 1 typedef char * va_list; // TC中定义为void*
 2 
 3 //为了满足需要内存对齐的系统
 4 #define _INTSIZEOF(n)    ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 
 5 
 6 //ap指向第一个变参的位置,即将第一个变参的地址赋予ap
 7 #define va_start(ap,v)    ( ap = (va_list)&v + _INTSIZEOF(v) ) 
 8 
 9 // 获取变参的具体内容,t为变参的类型,如有多个参数,则通过移动ap的指针来获得变参的地址,从而获得内容
10 #define va_arg(ap,t)    ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) 
11 
12 //清空va_list,即结束变参的获取
13 #define va_end(ap) ( ap = (va_list)0 )
原文地址:https://www.cnblogs.com/utank/p/6952870.html