From The C Book:
If a declaration contains the extern
storage class specifier, or is the
declaration of a function with no
storage class specifier (or both),
then:
- If there is already a visible declaration of that identifier with
file scope, the resulting linkage is
the same as that of the visible
declaration;- otherwise the result is external linkage.
So if this is the only time it’s declared in the translation unit, it will have external linkage.