#include extern void abort (void); void foo (int size, ...) { struct { struct { char x[size]; } e; unsigned r; } d; va_list ap; char c; int i; va_start (ap, size); d = va_arg (ap, typeof (d)); c = d.e.x[3]; if (c != '3') abort (); if (d.r != 2602) abort (); va_end (ap); } int main (void) { int z = 5, i; struct { struct { char a[z]; } y; unsigned r; } x; x.y.a[0] = '0'; x.y.a[1] = '1'; x.y.a[2] = '2'; x.y.a[3] = '3'; x.y.a[4] = '4'; x.r = 2602; foo (z, x); return 0; }