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