1#include <stdarg.h> 2 3va_list global; 4 5void vat(va_list param, ...) 6{ 7 va_list local; 8 9 va_start (local, param); 10 va_copy (global, local); 11 va_copy (param, local); 12 if (va_arg (local, int) != 1) 13 abort(); 14 va_end (local); 15 if (va_arg (global, int) != 1) 16 abort(); 17 va_end (global); 18 if (va_arg (param, int) != 1) 19 abort(); 20 va_end (param); 21 22 va_start (param, param); 23 va_start (global, param); 24 va_copy (local, param); 25 if (va_arg (local, int) != 1) 26 abort(); 27 va_end (local); 28 va_copy (local, global); 29 if (va_arg (local, int) != 1) 30 abort(); 31 va_end (local); 32 if (va_arg (global, int) != 1) 33 abort(); 34 va_end (global); 35 if (va_arg (param, int) != 1) 36 abort(); 37 va_end (param); 38} 39 40int main(void) 41{ 42 va_list t; 43 vat (t, 1); 44 exit (0); 45} 46