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
Specyfikator klasy magazynowej extern