Statische Speicherklassenspezifizierer
Die statischen Speicherklassenspezifizierer, static und extern, können auf Objekte und Funktionen angewendet werden. Die folgende Tabelle zeigt, wo die Schlüsselwörter static und extern nicht verwendet werden können.
Verwendung von "static" und "extern"
Konstrukt |
Kann "static" verwendet werden? |
Kann "extern" verwendet werden? |
---|---|---|
Funktionsdeklarationen innerhalb eines Blocks |
Nein |
Ja |
Formale Argumente für eine Funktion |
Nein |
Nein |
Objekte in einem Block |
Ja |
Ja |
Objekte außerhalb eines Blockes |
Ja |
Ja |
Funktionen |
Ja |
Ja |
Klassenmemberfunktionen |
Ja |
Nein |
Klassenmemberdaten |
Ja |
Nein |
typedef-Namen |
Nein |
Nein |
Ein mithilfe des static-Schlüsselworts angegebener Name wird, mit Ausnahme der statischen Member einer Klasse mit externer Verknüpfung, intern verknüpft. Das heißt, er ist nicht außerhalb der aktuellen Übersetzungseinheit sichtbar. Ein mithilfe des Schlüsselworts extern angegebener Name weist eine externe Verknüpfung auf, es sei denn, er wurde zuvor als Name mit interner Verknüpfung definiert. Weitere Informationen zur Sichtbarkeit von Namen finden Sie unter Bereich und Programm und Verknüpfung.
Hinweis
Funktionen, die als Inline deklariert und keine Memberfunktionen sind, erhalten die gleichen Verknüpfungseigenschaften wie Funktionen, die als static deklariert sind.
Ein Klassenname, dessen Deklaration noch nicht vom Compiler gefunden wurde, kann in einer extern-Deklaration verwendet werden. Der Name, der mit einer solchen Deklaration eingeführt wird, kann erst verwendet werden, wenn die Klassendeklaration aufgetreten ist.