基本解釋:
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...