C語言中的 extern關鍵字用法

2021-10-01 12:16:28 字數 1423 閱讀 4616

我們知道,程式的編譯單位是源程式檔案,乙個原始檔可以包含乙個或若干個函式。

在函式內定義的變數是區域性變數,而在函式之外定義的變數則稱為外部變數,外部變數也就是我們所講的全域性變數。它的儲存方式為靜態儲存,其生存週期為整個程式的生存週期全域性變數可以為本檔案中的其他函式所共用,它的有效範圍為從定義變數的位置開始到本原始檔結束

然而,如果全域性變數不在檔案的開頭定義,有效的作用範圍將只限於其定義處到檔案結束。

如果在定義點之前的函式想引用該全域性變數,則應該在引用之前用關鍵字 extern 對該變數作「外部變數宣告」,表示該變數是乙個已經定義的外部變數。有了此宣告,就可以從「宣告」處起,合法地使用該外部變數。

#include int max(int x,int y);

int main(void)

/*定義兩個全域性變數*/

int g_x = 10;

int g_y = 20;

int max(int x, int y)

**中,全域性變數 g_x 與 g_y 是在 main 函式之後宣告的,因此它的作用範圍不在 main 函式中。如果我們需要在 main 函式中呼叫它們,就必須使用 extern 來對變數 g_x 與 g_y 作「外部變數宣告」,以擴充套件全域性變數的作用域。也就是說,如果在變數定義之前要使用該變數,則應在使用之前加 extern 宣告變數,使作用域擴充套件到從宣告開始到本檔案結束。

如果整個工程由多個原始檔組成,在乙個原始檔中想引用另外乙個原始檔中已經定義的外部變數,同樣只需在引用變數的檔案中用 extern 關鍵字加以宣告即可。下面就來看乙個多檔案的示例:

/****max.c****/

#include /*外部變數宣告*/

extern int g_x ;

extern int g_y ;

int max()

/***main.c****/

#include /*定義兩個全域性變數*/

int g_x=10;

int g_y=20;

int max();

int main(void)

執行結果為:

the max value is 20

對於多個檔案的工程,都可以採用上面這種方法來操作。對於模組化的程式檔案,可在其檔案中預先留好外部變數的介面,也就是只採用 extern 宣告變數,而不定義變數,max.c 檔案中的 g_x 與 g_y 就是如此操作的。

通常,這些外部變數的介面都是在模組程式的標頭檔案中宣告的,當需要使用該模組時,只需要在使用時具體定義一下這些外部變數即可。main.c 裡的 g_x 與 g_y 則是相關示例。

c語言中extern關鍵字

extern關鍵字適用於變數及函式,並且擴充套件了他們的可見性,這也就是它被命名為extern的原因。首先介紹一下宣告 declaration 和定義 definition 的區別 乙個變數或者函式可以宣告任意次數,但只能定義一次。當我們在宣告或定義函式時,會隱藏extern關鍵字。例如,當我們定義...

C語言中extern關鍵字詳解

內容清單 1.用extern宣告外部變數 1 在乙個檔案內宣告的外部變數 2 在多個檔案中宣告外部變數 3 在多個檔案中宣告外部結構體變數 2.用extern宣告外部函式 3.總結 1 用extern宣告外部變數 定義 外部變數是指在函式或者檔案外部定義的全域性變數。外部變數定義必須在所有的函式之外...

C語言中extern關鍵字詳解

內容清單 1.用extern宣告外部變數 1 在乙個檔案內宣告的外部變數 2 在多個檔案中宣告外部變數 3 在多個檔案中宣告外部結構體變數 2.用extern宣告外部函式 3.總結 1 用extern宣告外部變數 定義 外部變數是指在函式或者檔案外部定義的全域性變數。外部變數定義必須在所有的函式之外...