Here's a version with less warnings: int a; struct b { char c; void *d; }; struct b e() { struct b f[] = {{}, "", f, a}; } Don't forget to use -fstack-check. Thomas