#include struct tiny { char c; char d; }; f (int n, ...) { struct tiny x; int i; va_list ap; va_start (ap,n); for (i = 0; i < n; i++) { x = va_arg (ap,struct tiny); if (x.c != i + 10) abort(); if (x.d != i + 20) abort(); } { long x = va_arg (ap, long); if (x != 123) abort(); } va_end (ap); } main () { struct tiny x[3]; x[0].c = 10; x[1].c = 11; x[2].c = 12; x[0].d = 20; x[1].d = 21; x[2].d = 22; f (3, x[0], x[1], x[2], (long) 123); exit(0); }