Partager via


En utilisant extern pour spécifier la liaison

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

Notes

Le mot clé d' extern déclare une variable ou une fonction et les spécifie qu'il a une liaison externe (son nom est visible à partir de fichiers autres que celui dans lequel elle a la valeur).En modifiant une variable, extern spécifie que la variable a la durée statique (il est allouée lorsque le programme démarre et a libéré lorsque les extrémités de programme).Une variable ou une fonction peut être définie dans un autre fichier source, ou ultérieurement dans le même fichier.Les déclarations de variables et des fonctions à la portée du fichier sont externes par défaut.

Exemple

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

En C++, utilisé avec une chaîne, extern spécifie que les conventions de liaison d'un autre langage sont utilisées pour les déclarateurs.C fonctionne et les données sont accessibles uniquement si elles sont déclarées précédemment comme ayant une liaison C.Toutefois, elles doivent être définies dans une unité de traduction séparément compilée.

Microsoft C++ prend en charge les chaînes « C » et « C++ » dans le domaine de littéral de chaîne .Tous les fichiers Include standard utilisent syntaxe d' extern « C » pour autoriser les fonctions des bibliothèques Runtime à utiliser dans les programmes C++.

Façons de l'exemple suivant les autres de déclarer des noms qui ont une liaison C :

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

Voir aussi

Référence

Mots clés C++

Caractéristiques de liaison

extern spécificateur de classe de stockage

Concepts

Comportement des identificateurs

Liaison