1 #ifndef __STDARG 2 #define __STDARG 3 4 typedef char *va_list; 5 6 #define va_start(list, start) list =\ 7 (sizeof(start) < 4?\ 8 (char*)((int*)&(start)+1):\ 9 (char*)(&(start)+1)) 10 #define va_end(list) 11 #define va_arg(list, mode)\ 12 ((sizeof(mode) <= 4)?\ 13 ((list += 4), (mode*)list)[-1]:\ 14 (signof(mode) != signof(double))?\ 15 ((list += sizeof(mode)), (mode*)list)[-1]:\ 16 ((list = (char*)((unsigned long)(list+7) & ~7) + sizeof(mode)), (mode*)list)[-1]) 17 18 #endif /* __STDARG */ 19