http://kor.i2p/books/The%20C%20Programming%20Language%20by%20K&R/appc.html
Empty declarations, which have no declarators and don't declare at least
a structure, union, or enumeration, are forbidden by the Standard. On the
other hand, a declaration with just a structure or union tag redeclares
that tag even if it was declared in an outer scope. External data declarations without any specifiers or qualifiers (just a naked
declarator) are forbidden.