C C 中extern關鍵字的使用

2021-10-10 08:55:00 字數 914 閱讀 9118

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 也就是說在沒有用...