真的不能理解可变参数的三个宏的真正含义

typedef char *va_list;

#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)

上面这些代码真的很难理解,也不知哪里有好的文章,详细解释一下,最好从汇编和C两个方面。

猜你喜欢

转载自blog.csdn.net/weixin_39410618/article/details/82795766
今日推荐