使用指定的連結到外部
extern string-literal { declaration-list }
extern string-literal declaration
備註
extern關鍵字宣告變數或函式,並指定它具有外部連結 (其名稱會顯示在 [檔案而不是在其中定義的)。 當修改變數, extern指定的變數具有靜態的持續時間 (已配置當程式開始,並在程式結束時解除配置)。 變數或函式可能被定義在另一個原始程式檔,或稍後在相同的檔案。 宣告的變數和函式在檔案範圍為預設的外接式磁碟。
範例
// 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;
}
在 C++,當搭配 string,其extern指定使用 declarator(s) 連結慣例,另一種語言。 先前宣告為具有 c 連結時,才可存取 c 函式和資料。 不過,必須分別編譯過的轉譯單位中定義。
Microsoft C++ 支援字串 "C" 和 "C + +" 在字串常值欄位。 所有標準,包括檔案使用extern "C"的語法,以允許執行階段程式庫函式,以用於 C++ 程式。
下列範例會顯示其他的方式來宣告具有 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;