Udostępnij za pośrednictwem


Użycie zewnętrznie w celu określenia powiązania

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

Uwagi

Słowo kluczowe extern deklaruje zmienną lub funkcję i określa, że posiada zewnętrzne połączenie (jej nazwa jest widoczna z plików innych niż ten, w którym została zdefiniowana)Podczas modyfikowania zmiennej, extern określa, że zmienna ma statyczny czas trwania (jest przydzielana przy rozpoczęciu programu i zwalniana przy zakończeniu programu).Zmienna lub funkcja mogą być zdefiniowane w innym pliku źródłowym lub dalej w tym samym pliku.Deklaracje zmiennych i funkcji w zakresie pliku są domyślnie zewnętrzne.

Przykład

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

Słowo kluczowe extern w przypadku użycia z ciągiem w języku C++ określa, że stosowane są konwencje połączeń innego języka dla deklaratora (deklaratorów).Dostęp do funkcji i danych języka C można uzyskać tylko wtedy, gdy są one wcześniej zadeklarowane jako posiadające połączenia C.Jednakże muszą być one zdefiniowane w oddzielnie skompilowanej jednostce tłumaczenia.

Microsoft C++ obsługuje ciągi "C" i "C++" w polu string-literal.Wszystkie standardowe pliki dołączone korzystają ze składni "C" extern, aby pozwolić na użycie funkcji bibliotek wykonawczych w programach C++.

W poniższym przykładzie pokazano alternatywne sposoby deklarowania nazw, które mają połączenia 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;

Zobacz też

Informacje

Słowa kluczowe języka C++

Specyfikacje połączenia

extern — specyfikator klasy magazynowania

Koncepcje

Identyfikatory zachowania

Połączenie