<< 35/64 >>
First Last

可変長引数

x86 での stdarg.h

 typedef char *va_list;
 #define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3)
 #define va_arg(ap,type) (ap += (sizeof(type)+3)&~3, *(type *)(ap - ((sizeof(type)+3)&~3)))
 #define va_copy(dest, src) (dest) = (src)
 #define va_end(ap)

全部スタック経由なので、スタックを va_arg のたびに順になめていくだけ