共用方式為


使用指定的連結到外部

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;

請參閱

參考

C + + 關鍵字

連結規格

extern 儲存類別規範

概念

識別項的行為

連結