The initialization of aggregates with non-constants is not allowed in the ANSI-C specification. The Compiler allows it if the -Ansi: Strict ANSI compiler option is not set (see the following listing).
void main() { struct A { struct A *n; } v={&v}; /* the address of v is not constant */ }