关于不定参数的函数的问题!
不定参数的函数的参数处理是建立在栈上的,
如
printf(const char* msg,...);
函数内部处理时候要用到如下的宏
#define _INTSIZEOF(n)
( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
#define va_end(ap) ( ap = (va_list)0 )
我一直搞不懂为什么要用 _INTSIZEOF 代替 sizeof,
而
#define _INTSIZEOF(n)
( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
又代表什么呢?