In global scope, identifiers for the following kinds of
entities declared without the
static storage class
specifier have external linkage:
If an identifier
in C is declared with
the
extern keyword and if a previous declaration
of an object or function with the same identifier is visible, the
identifier has the same linkage as the first declaration. For example,
a variable or function that is first declared with the keyword
static and
later declared with the keyword
extern has internal
linkage. However, a variable or function that has no linkage and was
later declared with a linkage specifier will have the linkage that
was expressly specified.