External
Les objets et les variables déclarés comme extern déclarent un objet qui est défini dans une autre unité de traduction ou dans une portée englobante comme ayant une liaison externe.
La déclaration de variables const avec la classe de stockage extern oblige la variable à avoir une liaison externe. Une initialisation d'une variable extern const est autorisée dans l'unité de traduction de définition. Les initialisations dans des unités de traduction autres que l'unité de traduction de définition produisent des résultats indéterminés.
Le code suivant illustre deux déclarations extern, DefinedElsewhere (qui fait référence à un nom défini dans une unité de traduction différente) et DefinedHere (qui fait référence à un nom défini dans une portée englobante) :
// external.cpp
// defined in another translation unit
extern int DefinedElsewhere;
int main() {
int DefinedHere;
{
// refers to DefinedHere in the enclosing scope
extern int DefinedHere;
}
}