extern的幾種用法

2021-07-09 05:42:21 字數 676 閱讀 3864

一般來說,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 在另外乙個檔案裡用下列語句進行了宣告...