Sdílet prostřednictvím


Používání příkazu extern pro specifikaci propojení

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

Poznámky

Klíčové slovo extern deklaruje proměnnou nebo funkci, pro něž určuje, že mají vnější propojení (jejich název je viditelný i v jiných souborech než těch, v nichž jsou definovány).Při úpravě proměnné klíčové slovo extern určuje, že proměnná má statické trvání (její paměť je přidělena na začátku a uvolněna na konci programu).Proměnnou nebo funkci lze definovat v jiném zdrojovém souboru nebo později ve stejném souboru.Deklarace proměnných a funkcí v oboru souboru jsou vnější již standardně.

Příklad

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

V jazyce C++ při použití s řetězcem určuje klíčové slovo extern skutečnost, že jsou pro deklarátory použity propojovací konvence jiného jazyka.Funkce a data jazyka C mohou být zpřístupněna pouze v případě, že byla dříve deklarována s propojením jazyka C.Musí však být definovány v odděleně kompilované jednotce překladu.

Jazyk Microsoft C++ podporuje řetězce "C" a "C++" v poli string-literal.Všechny standardní soubory zahrnutí používají syntaxi extern "C" a umožňují tak použití funkcí knihoven modulu runtime v programech jazyka C++.

Následující příklad ukazuje alternativní způsoby deklarace názvů, které mají propojení jazyka 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;

Viz také

Referenční dokumentace

Klíčová slova jazyka C++

Specifikace propojení

extern – specifikátor třídy úložiště

Koncepty

Chování identifikátorů

Propojení