1 #include <stdarg.h> 2 3 struct tiny 4 { 5 char c; 6 char d; 7 char e; 8 char f; 9 }; 10 11 f (int n, ...) 12 { 13 struct tiny x; 14 int i; 15 16 va_list ap; 17 va_start (ap,n); 18 for (i = 0; i < n; i++) 19 { 20 x = va_arg (ap,struct tiny); 21 if (x.c != i + 10) 22 abort(); 23 if (x.d != i + 20) 24 abort(); 25 if (x.e != i + 30) 26 abort(); 27 if (x.f != i + 40) 28 abort(); 29 } 30 { 31 long x = va_arg (ap, long); 32 if (x != 123) 33 abort(); 34 } 35 va_end (ap); 36 } 37 38 main () 39 { 40 struct tiny x[3]; 41 x[0].c = 10; 42 x[1].c = 11; 43 x[2].c = 12; 44 x[0].d = 20; 45 x[1].d = 21; 46 x[2].d = 22; 47 x[0].e = 30; 48 x[1].e = 31; 49 x[2].e = 32; 50 x[0].f = 40; 51 x[1].f = 41; 52 x[2].f = 42; 53 f (3, x[0], x[1], x[2], (long) 123); 54 exit(0); 55 } 56 57