一般來說,extern關鍵字用於三種場合:
1、用於標頭檔案預編譯時對於c語言編譯的宣告,如常見的:
#ifndef _shader_h_
#define _shader_h_
#ifdef _cplusplus
extern "c"
#endif
#endif
一般這種情況是表示在c++中引用c語言中的函式和變數,如果
c++呼叫乙個
c語言編寫的
.dll
時,當包括
.dll
的標頭檔案或宣告介面函式時,應加
extern "c" 。
2、用於定義外部變數。
extern glint xparam;
僅僅宣告xparam是個外部變數,而其實際定義是在glint xparam=0的語句中定義的。
宣告和定義是完全不同的兩個概念,個人理解為宣告更類似於引用,這樣可以避免在link時產生重複定義,某個函式到其他的obj檔案中需要定義(記憶體位址)時產生衝突出錯,但是注意並不是所有的變數都能用extern宣告,只有全域性變數並且沒有被static 宣告的變數才能宣告為extern。 如果你不想自己的全域性變數被其他檔案引用,就加上static宣告。
3、用於函式宣告。
函式的宣告與定義和變數類似,僅僅是暗示這個函式可能在別的原始檔裡定義。
extern用法詳解
1 基本解釋 extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告...
extern用法詳解
extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告 extern...
extern用法詳解
1 基本解釋 extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告...