Verwenden von "extern" zur Angabe der Verknüpfung
extern string-literal { declaration-list }
extern string-literal declaration
Hinweise
Das Schlüsselwort extern deklariert eine Variable oder Funktion und gibt an, dass sie eine externe Verknüpfung hat (Ihr Name ist von Dateien aus sichtbar, mit Ausnahme der Datei, in der sie definiert wurde). Wenn eine Variable geändert wird, gibt extern an, dass die Variable eine statische Dauer hat (sie wird zugeordnet, wenn das Programm beginnt, und die Zuordnung wird aufgehoben, wenn das Programm beendet wird). Die Variable oder Funktion können in einer anderen Quelldatei oder später in derselben Datei definiert werden. Deklarationen von Variablen und Funktionen im Dateigültigkeitsbereich sind standardmäßig extern.
Beispiel
// specifying_linkage1.cpp
int i = 1;
void other();
int main() {
// Reference to i, defined above:
extern int i;
}
void other() {
// Address of global i assigned to pointer variable:
static int *external_i = &i;
// i will be redefined; global i no longer visible:
// int i = 16;
}
Wenn sie mit einer Zeichenfolge verwendet wird, gibt extern in C++ an, dass die Bindungskonventionen einer anderen Sprache für die Deklaratoren verwendet werden. Auf C-Funktionen und - Daten kann nur dann zugegriffen werden, wenn sie zuvor wie eine C-Bindung deklariert wurden. Allerdings müssen sie in einer separat kompilierten Übersetzungseinheit definiert sein.
Microsoft C++ unterstützt die Zeichenfolgen "C" und "C++" im string-literal-Feld. Alle Standardincludedateien verwenden die Syntax extern "C", um die in C++-Programmen verwendeten Laufzeitbibliotheksfunktionen verwenden zu können.
Das folgende Beispiel zeigt unterschiedliche Methoden, um Namen zu deklarieren, die eine C-Verknüpfung haben:
// specifying_linkage2.cpp
// compile with: /c
// Declare printf with C linkage.
extern "C" int printf( const char *fmt, ... );
// Cause everything in the specified header files
// to have C linkage.
extern "C" {
// add your #include statements here
#include <stdio.h>
}
// Declare the two functions ShowChar and GetChar
// with C linkage.
extern "C" {
char ShowChar( char ch );
char GetChar( void );
}
// Define the two functions ShowChar and GetChar
// with C linkage.
extern "C" char ShowChar( char ch ) {
putchar( ch );
return ch;
}
extern "C" char GetChar( void ) {
char ch;
ch = getchar();
return ch;
}
// Declare a global variable, errno, with C linkage.
extern "C" int errno;
Siehe auch
Referenz
Speicherklassenspezifizierer "extern"