I'm using gcc to compile plan9 code from some time (4.7/4.8) and that option are masking real behaviour. Do not warns or put out an error about "anonymous structs", but you will have a conflict if to structs in the same source are including a, for example, "Lock;" element, and ld could not assign right the values if declarations are not specified ansi style (variable initialization it's made by ld, not by the compiler): you will get some dragons in some cases.
Look at LP49 source code and you will see that authors used your second way.