stdarg.h (787B)
1 #ifndef __STDARG 2 #define __STDARG 3 4 #if !defined(_VA_LIST) 5 #define _VA_LIST 6 typedef char *__va_list; 7 #endif 8 typedef __va_list va_list; 9 10 #define va_start(list, start) ((void)((list) = (sizeof(start)<4 ? \ 11 (char *)((int *)&(start)+1) : (char *)(&(start)+1)))) 12 #define __va_arg(list, mode, n) \ 13 (*(mode *)(&(list += ((sizeof(mode)+n)&~n))[-(int)((sizeof(mode)+n)&~n)])) 14 #define _bigendian_va_arg(list, mode, n) (\ 15 sizeof(mode)==1 ? *(mode *)(&(list += 4)[-1]) : \ 16 sizeof(mode)==2 ? *(mode *)(&(list += 4)[-2]) : __va_arg(list, mode, n)) 17 #define _littleendian_va_arg(list, mode, n) __va_arg(list, mode, n) 18 #define va_end(list) ((void)0) 19 #define va_arg(list, mode) (sizeof(mode)==8 ? \ 20 *(mode *)(&(list = (char*)(((int)list + 15)&~7U))[-8]) : \ 21 _bigendian_va_arg(list, mode, 3U)) 22 #endif