1、extern可以位於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。
2、extern也可用來進行鏈結指定。
綜上:extern有兩個作用
(1)當它與"c"一起連用時,如:extern "c" void fun(int a, int b);
則告訴編譯器在編譯fun() 這個函式名時按著c的規則去翻譯相應的函式名而不是c++的,而c++的規則,是在翻譯這個函式名時會把fun這個名字變得面目全非,可能是fun@abc_int_int#%$
也可能是別的,這要看編譯器的"脾氣"了(不同的編譯器採用的方法不一樣),為什麼這麼做呢,因為c++支援函式的過載啊,在這裡不去過多的論述這個問題!
(2)當extern不與"c"在一起修飾變數或函式時,如在標頭檔案中:extern int g_good;
它的作用就是宣告函式或全域性變數的作用範圍的關鍵字,其宣告的函式和變數可以在本模組或其他模組中使用,記住它是乙個宣告不是定義! 也就是說b模組(編譯單元)要是引用模組(編譯單元)a中定義的全域性變數或函式時,它只要包含a模組的標頭檔案即可,在編譯階段,模組b雖然找不到該函式或變數,但它不會報錯,它會在連線時從模組a生成的目標**中找到此函式。
二、示例
(1)extern 「c」的使用,下面是乙個標準的寫法:
//在.**件的頭上
#ifdef __cplusplus
#if __cplusplus
extern
"c"#endif
#endif
/* __cplusplus */
C C 中extern關鍵字
extern關鍵字可置於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數或函式時,在其它模組中尋找其定義。另外,extern也可用來進行鏈結指定。在介紹外部變數之前,先來看一下什麼是區域性變數。下面是乙個例子。include define maxline 1000 int ...
C C 中extern關鍵字
當extern與 c 一起連用時,如 extern c void fun int a,int b 這就告訴編譯器在編譯fun這個函式名時按著c的規則去翻譯相應的函式名而不是c 的,c 的規則在翻譯這個函式名時會把fun這個名字弄得面目全非,例如 fun abc isdnfsdf 不同編譯器採取的翻譯...
C C 的extern關鍵字
比如這是我的myextern.cpp檔案,只有一行 int ex 3 然後這是我的main.cpp include using namespace std intmain 如果我在main中加extern關鍵字 include using namespace std intmain 也就是說在沒有用...