Freigeben über


Verwenden von extern, um die Bindung angeben

extern string-literal { declaration-list }
extern string-literal declaration

Hinweise

Das extern-Schlüsselwort deklariert eine Variable oder eine Funktion und gibt an, dass er externe Bindung aufweist (der Name besteht aus den Dateien nicht sichtbar, in der er definiert wurde).Wenn es sich um eine Variable, extern ändert angibt, dass die Variable statische Dauer (sie zugeordnet wird, wenn das Programm beginnt und Shared, wenn das Programm beendet.)Die Variable oder Funktion werden in eine andere Quelldatei oder höher 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;
}

In C++ wenn sie mit einer Zeichenfolge verwendet wird, gibt extern an, dass die Bindung von konventionen einer anderen Sprache für die Deklaratoren verwendet werden.C-Funktionen und - Daten zugegriffen werden, können sie zuvor als seien ihre C-Bindung deklariert werden.Allerdings müssen sie separat in einer kompilierten Übersetzungseinheit definierte.

Microsoft C++ unterstützt die Zeichenfolgen „C“ und „C++“ im Feld Zeichenfolgenliteral .Alle Standardwert includedateien verwenden die Syntax extern „C“, um die in C++-Programmen Laufzeitbibliotheksfunktionen verwendet werden soll.

Im folgenden Beispiel werden andere Möglichkeiten zum Namen deklarieren, die C-Bindung aufweisen:

// 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

C++-Schlüsselwörter

Bindungsangaben

extern-Speicherklassenspezifizierer

Konzepte

Verhalten von Bezeichnern

Bindung