extern 關鍵字的幾個特點記錄

2022-09-14 13:57:10 字數 1441 閱讀 4977

在 c 和 cpp 檔案中,通過extern關鍵字宣告另乙個 c/cpp 檔案中的變數或函式,可以不包含共同的標頭檔案而直接呼叫;

如:run.c / run.cpp

#include int runvalue=7355608;

void runprint(int value)

main.c / main.cpp

int main(void)

此時兩個檔案是獨立的,沒有包含共同的標頭檔案

輸出

hello,world!

value: 7355608

extern "c" 作為c++的關鍵字使用, 在c中是沒有的

而且 extern "c" 直接宣告 和 extern "c" {} 塊內宣告對於變數和函式是不同的

同樣是兩個獨立的cpp檔案,各不包含相同的標頭檔案

當 extern "c" 直接宣告變數時,作用與 extern 宣告變數效果相同

當 extern "c" 直接宣告函式時,無法取得與extern宣告同樣的效果,在其它原始檔中無法以此種方式使用函式

如run.cpp

#include int runvalue=7355608;

void runprint(int value)

main.cpp

//宣告變數,效果不變

extern "c" int runvalue;

//編譯器報錯

//宣告函式,由於定義在另乙個不互通的檔案中,無法被外部宣告到此處,必須包含其標頭檔案

extern "c" void runprint(void);

int main(void)

使用extern "c" {} 塊宣告變數時,變數必須在塊內也單獨使用extern 宣告(無定義檔案的標頭檔案引用)

extern "c"
若不在塊內宣告變數時新增extern關鍵字,則無法通過編譯

使用extern "c" {} 塊宣告函式時,若不包含定義檔案的標頭檔案,則在塊內函式無效,新增extern關鍵字也會編譯出錯

如在塊內使用extern

extern "c"
不在塊內使用extern

extern "c"
不使用 extern "c" 直接宣告或塊內宣告在c/cpp原始檔的變數,而是直接使用extern宣告

用extern單獨宣告可以安全其他檔案中的變數,而不必開放在標頭檔案中(可在區域性內extern宣告而非必需在全域性,被宣告的變數必須是全域性且非const變數)

(若是被定義的const全域性變數需要被其他檔案使用,則必須extern宣告在標頭檔案中並讓呼叫者包含標頭檔案)

extern關鍵字講解

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

extern關鍵字總結

關於extern關鍵字總結 1.extern的變數的原先定義的地方不能有static修飾 2.如果宣告是const int,那麼extern也必須是extern const int 3.兩個.cpp檔案不能定義同乙個變數名 4.標頭檔案基本可以說是不能定義變數的,否則只要有多個cpp檔案包含了該標頭...

關鍵字 extern 使用

在c語言中,修飾符extern用在變數或者函式的宣告前,用來說明 此變數 函式是在別處定義的,要在此處引用 1.extern修飾變數的宣告。舉例來說,如果檔案a.c需要引用b.c中變數int v,就可以在a.c中宣告extern int v,然後就可以引用變數v。能夠被其他模組以extern修飾符引...