Udostępnij za pośrednictwem


Użycie extern, aby określić powiązanie

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

Uwagi

extern Słowa kluczowego deklaruje zmienną lub funkcję i określa, że posiada powiązania zewnętrznych (jego nazwa jest widoczna z plików innego niż ten, w którym jest zdefiniowana).Podczas modyfikowania zmiennej, extern Określa, że zmienna ma statyczny czas trwania (przydzielany podczas program rozpoczyna się i dealokowane wtedy, kiedy kończy się program).Zmienna lub funkcja może zdefiniowany w innym pliku źródłowego lub w dalszej części tego samego pliku.Deklaracje zmiennych i funkcji w zakresie pliku są zewnętrzne domyślnie.

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

W języku C++, gdy używana z ciągiem extern Określa, że konwencje powiązania dla innego języka są używane do declarator(s).Funkcje c i dane są dostępne tylko wtedy, gdy wcześniej zostały zgłoszone jako posiadające c powiązania.Jednakże muszą one zdefiniowane w jednostki oddzielnie skompilowany tłumaczenia.

Microsoft C++ obsługuje ciągów "C" i "C++" w literał ciągu pola.Wszystkie standardowe obejmują użycie plików extern składni "C", aby umożliwić funkcji run-time library do wykorzystania w programach w języku C++.

Alternatywne sposoby zadeklarować nazwy, które mają powiązania c można znaleźć w poniższym przykładzie:

// 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łów kluczowych języka C++

Specyfikacje powiązania

Specyfikator klasy magazynowej extern

Koncepcje

Zachowanie identyfikatory

Powiązania