Extern
Objekte und Variablen, die als extern deklariert werden, deklarieren ein Objekt, das in einer anderen Übersetzungseinheit oder in einem einschließenden Bereich mit externer Verknüpfung definiert ist.
Die Deklaration von const-Variablen mit der extern-Speicherklasse erzwingt eine externe Bindung für die Variable. Eine Initialisierung einer extern const-Variable ist in der definierenden Übersetzungseinheit zulässig. Initialisierungen in Übersetzungseinheiten, die keine definierenden Übersetzungseinheiten sind, erzeugen nicht definierte Ergebnisse.
Der folgende Code zeigt zwei extern-Deklarationen, DefinedElsewhere (die sich auf einen Namen bezieht, der in einer anderen Übersetzungseinheit definiert wurde) und DefinedHere (die sich auf einen Namen bezieht, der in einem einschließenden Bereich definiert wurde):
// external.cpp
// defined in another translation unit
extern int DefinedElsewhere;
int main() {
int DefinedHere;
{
// refers to DefinedHere in the enclosing scope
extern int DefinedHere;
}
}