帶有extern的變數,其不用加標頭檔案,編譯器會自動去其他檔案中查詢,並進行呼叫。值得注意的兩點:
(1)帶有初始值的extern宣告,是一種定義;
如:extern int ival=10;//定義變數ival
等同於:int ival=10;
(2)extern宣告必須與其定義分屬於不同的檔案;
如:extern int ival;
int ival=10;
是錯誤的寫法。 1.
extern宣告變數
基本形式:extern int ival;
如:在檔案file_1.cpp中定義:int ival=10;
在檔案file_2.cpp中定義:extern int ival;
那麼file_2.cpp即指file_1.cpp中的ival;
但若file_3.cpp中有int ival=20;結果如何呢?
出現了重定義-雖然我們沒有加任何標頭檔案。筆者程式例子是counter而已。 2.
extern+static用法
解決1中的辦法呢?很簡單在file_3.cpp中有static int ival=20;便可以了。因為加上static後其作用域僅僅是file_3.cpp這個檔案。 3.
extern+const用法
加上const的全域性變數僅僅對其所在檔案有用。在定義時加上extern來說明其為其他檔案所用:
//file_1.cpp
extern const int ival=100;
//file_2.cpp
extern const int ival;
C const用法匯集(摘)
1 最基本的用法 a constint a 100 b的內容不變,b只能是100也就是宣告乙個int型別的常量 define b 100 intconstb 100 和上面作用一樣 b const指標和引用一般用在函式的引數中 int m a 出錯,常量只能用常指標,如下 int c 1 const...
extern用法詳解
1 基本解釋 extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告...
extern用法詳解
extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告 extern...