It is just an union with no name and a variable.
gcc3 -ansi -pedantic accepts this: union { char *s; const char *l; } u2 = {(char*)0}; and this: union { char *s; long l; } u1 = {(char*)0}; but emits a warning if this union { char *s; long l; } u; u.l = (long)0; is followed by a declaration. -- Helmut Karlowski