跳轉到內容

C++ 程式設計

來自華夏公益教科書,開放的書籍,開放的世界

extern 關鍵字告訴編譯器一個變數是在另一個源模組(當前作用域之外)定義的。然後連結器找到這個實際宣告並設定 extern 變數指向正確的位置。由 extern 語句描述的變數不會分配任何空間,因為它們應該在其他地方正確定義。如果一個變數被宣告為 extern,而連結器沒有找到它的實際宣告,它將丟擲一個“未解析的外部符號”錯誤。

示例

extern int i;
宣告存在一個名為i 的 int 型別的變數,定義在程式的某個地方。
extern int j = 0;
定義一個變數j具有外部連結;extern 關鍵字在這裡是多餘的。
extern void f();
宣告存在一個函式f不帶引數且沒有返回值,定義在程式的某個地方;extern 是多餘的,但有時被認為是好的風格。
extern void f() {;}
定義函式f()在上面宣告;同樣,extern 關鍵字在這裡在技術上是多餘的,因為外部連結是預設的。
extern const int k = 1;
定義一個常量int k值為1,並且具有外部連結;extern是必需的,因為const變數預設具有內部連結。

extern 語句經常用於允許資料跨越多個檔案的範圍。

當應用於函式宣告時,附加的 "C" 或 "C++" 字串文字將在使用相反語言編譯時更改名稱修飾。也就是說,extern "C" int plain_c_func(int param); 允許 C++ 程式碼執行 C 庫函式 plain_c_func。

華夏公益教科書