1 #include <stdarg.h> 2 3 struct s { int x, y; }; 4 5 f (int attr, ...) 6 { 7 struct s va_values; 8 va_list va; 9 int i; 10 11 va_start (va, attr); 12 13 if (attr != 2) 14 abort (); 15 16 va_values = va_arg (va, struct s); 17 if (va_values.x != 0xaaaa || va_values.y != 0x5555) 18 abort (); 19 20 attr = va_arg (va, int); 21 if (attr != 3) 22 abort (); 23 24 va_values = va_arg (va, struct s); 25 if (va_values.x != 0xffff || va_values.y != 0x1111) 26 abort (); 27 28 va_end (va); 29 } 30 31 main () 32 { 33 struct s a, b; 34 35 a.x = 0xaaaa; 36 a.y = 0x5555; 37 b.x = 0xffff; 38 b.y = 0x1111; 39 40 f (2, a, 3, b); 41 exit (0); 42 } 43