int ejArgs(int argc, char_t **argv, char_t *fmt, ...)
{
va_list vargs;
char_t *cp, **sp;
int *ip;
int argn;
/*
va_start(va_list vap, 最后一个普通参数)
va_start(vargs, fmt); 相当于 char *vargs= (char *)&fmt + sizeof(int);
此时vap正好指向n后面的可变参数表中的第一个参数。
实质是宏定义:
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
*/
va_start(vargs, fmt);
if (argv == NULL) {
......
阅读全文