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的...