C 的extern關鍵字

2022-03-21 11:13:01 字數 545 閱讀 7403

extern是乙個宣告,不是乙個定義,a模組想應用b模組的乙個函式或者變數,a模組包含b模組的標頭檔案,並且在變數或者標頭檔案前,加 extern,雖然編譯的時候,找不到模組的定義,但是在連線的時候,會在b模組生成的**中,找到函式或者變數。

1、外部用的時候,不能乙個定義陣列,乙個定義指標這種

2、變數在.h中只是宣告,不要定義,不然外部模組引用標頭檔案就是定義兩次,連線錯誤

3、可以在應用模組再次宣告,不過這樣話,.h的檔案函式就不能用了。

4、宣告乙個ectern變數,只佔據乙份記憶體。

5、static宣告的時候,最好放在原始檔,因為都引用這個標頭檔案的時候,容易造成記憶體汙染

假如a.h中有 int a=10; t1.cpp和t2.cpp同時include "a.h"則編譯不成功,因為a重複定義;

如果 a.h中是 static int a=10;則可以,因為t1和t2中的a只是名字相同,位址空間不同;

如果a.h中是 extern int a; 並且在a.cpp中 int a=10; 則t1和t2中的a指向同乙個位址空間。

詳細介紹 

C 之關鍵字extern

最近看了許多關於extern關鍵字的文章,有一些心得體會,本篇博文綜合了許多文章的內容,不正確的地方還希望大家能夠給予指正!其中先指明乙個誤區 許多人認為標頭檔案只能包含宣告,這其實是不對的!一 首先,讓我們來了解宣告和定義的基本概念。1.1.宣告的概念 大概來講宣告主要是為了支援模組 編譯單元 c...

關於C 的extern關鍵字

一 extern關鍵字的作用檔案中定義的全域性變數的可見性擴充套件到整個程式是在鏈結完成之後,而在編譯階段,他們的可見性仍侷限於各自的檔案。編譯器的目光不夠長遠,編譯器沒有能夠意識到,某個變數符號雖然不是本檔案定義的,但是它可能是在其它的檔案中定義的。雖然編譯器不夠遠見,但是我們可以給它提示,幫助它...

extern關鍵字講解

基本解釋 extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告 e...