8 extern 解析與用法

2022-02-12 19:54:20 字數 1031 閱讀 7779

1 基本解釋

extern

可以置於變數或者

函式前,以標示變數或者

函式的定義在別的檔案中,提示編譯器遇到此變數和

函式時在其他模組中尋找其定義。

另外,extern

也可用來進行鏈結指定。使用

extern

時候要嚴格對應宣告時的格式。

extern

用在變數宣告中常常有這樣乙個作用,你在

*.c檔案中宣告了乙個全域性的變數,這個全域性的變數如果要被引用,就放在

*.h中並用

extern

來宣告。

2問題:extern 「c」

在c++

環境下使用c

函式的時候,常常會出現編譯器無法找到obj

模組中的c函式

定義,從而導致鏈結失敗的情況,應該如何解決這種情況呢?

c++語言在編譯的時候為了解決

函式的多型問題,會將

函式名和引數聯合起來生成乙個中間的

函式名稱,而

c語言則不會,因此會造成鏈結時找不到對應

函式的情況,此時c

函式就需要用extern 「c」

進行鏈結指定,這告訴編譯器,請保持我的名稱,不要給我生成用於鏈結的中間

函式名。

下面是乙個標準的寫法:

//在.h

檔案的頭上

#ifdef __cplusplus

extern "c"

#endif

3 問題:

extern 

函式如果

函式的宣告中帶有關鍵字extern

,僅僅是暗示這個

函式可能在別的原始檔裡定義,沒有其它作用。即下述兩個

函式宣告沒有明顯的區別:

extern int f(); 和

int f();

當然,這樣的用處還是有的,就是在程式中取代include 「*.h」

來宣告函式。參考

[1] 

[2] 

[3] 

[4]  

extern 與 static 用法總結

資料1 1 概念基礎 區域性變數 函式內部定義的變數 包括定義在函式內部復合語句中的變數 全域性變數 定義在函式外部的變數。作用域 任何識別符號 包括變數 函式名 符號常量及新的資料名 都有它的作用範圍,此範圍稱為該識別符號的作用域。比如符號常量的作用域是從定義符號 常量的地方開始到包含這個 def...

static與extern的用法

static是c 中常用的修飾符,它被用來控制變數的存貯方式和可見性。extern,c 是使c 能夠呼叫c寫作的庫檔案的乙個手段,如果要對編譯器提示使用c的方式來處理函式的話,那麼就要使用extern c 來說明。一.c語言中的static關鍵字 在c語言中,static可以用來修飾區域性變數,全域...

c語言static與extern的用法

一,static和extern 大工程下我們會碰到很多原始檔。檔案a.c static int i 只在a檔案中用 int j 在工程裡用 static void init 只在a檔案中用 void callme 在工程中用 上面的全域性i變數和init 函式只能用在a.c檔案中,全域性變數sum的...