C 中extern函式介紹

2021-08-05 18:59:07 字數 807 閱讀 4717

基本解釋:

extern可以置於變數或者函式前,以標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。此外

extern

也可用來進行鏈結指定。

也就是說

extern

有兩個作用,第乙個

,當它與

"c"一起連用時,如

: extern "c" void fun(int a, int b);

則告訴編譯器在編譯

fun這個函式名時按著

c的規則去翻譯相應的函式名而不是

c++的,

c++的規則在翻譯這個函式名時會把

fun這個名字變得面目全非,可能是

fun@abc_int_int#%$

也可能是別的,這要看編譯器的"脾氣

"了(不同的編譯器採用的方法不一樣

),為什麼這麼做呢,因為

c++!

第二,當

extern

不與"c"

在一起修飾變數或函式時,如在標頭檔案中

: extern int g_int; 

它的作用就是宣告函式或全域性變數的作用範圍的關鍵字,其宣告的函式和變數可以在本模組活其他模組中使用,記住它是乙個宣告不是定義

!也就是說b模組

(編譯單元

)要是引用模組

(編譯單元

)a中定義的全域性變數或函式時,它只要包含

a模組的標頭檔案即可

,在編譯階段,模組

b雖然找不到該函式或變數,但它不會報錯,它會在連線時從模組

a生成的目標**中找到此函式。

C 介面函式(c中呼叫c 函式extern)

一 在c 的標頭檔案中 需要包含 ifdef cplusplus extern c endif在c 的cpp檔案中需要包含該函式的實現 const char dmnmsagentgetfirstpeerid const char dmnmsagentgetnextpeerid 二 在c的.c檔案中對...

C 中extern 的用法

前段時間看了extern 的用法,今天試了一下出現了如下問題,我在乙個標頭檔案1中定義了全域性常量,然後在標頭檔案2中定義了同樣的全域性變數,然後把兩個標頭檔案包含在另外乙個cpp裡面出現了了重新定義的錯誤,去掉頭檔案2中的全域性定義,undeclared identifier 的錯誤。最後把2中的...

C 中extern的使用

來自 1.宣告外部實體 宣告外部全域性變數或物件,一般用於標頭檔案中,表示在其它編譯單元內定義的變數,鏈結時進行外部鏈結,如 1.宣告外部實體 宣告外部全域性變數或物件,一般用於標頭檔案中,表示在其它編譯單元內定義的變數,鏈結時進行外部鏈結,如 extern int ivalue 此時的extern...