Identifiers for objects and functions declared within a block
and with the storage class extern have the same linkage as any visible declaration
with file scope. If there is no visible declaration with file scope,
the identifier has external linkage, and the definition remains visible
until the end of the translation unit.
However, because this is an extension to ANSI C, a warning
will be issued on subsequent uses of the identifier if the absence
of this extended visibility could cause a change in behavior on
a port to another conforming implementation.