c語言static與extern的用法

2022-05-16 18:45:51 字數 798 閱讀 7572

一,static和extern:

大工程下我們會碰到很多原始檔。

檔案a.c

static int i; //只在a檔案中用

int j;    //在工程裡用

static void init()         //只在a檔案中用

void callme()          //在工程中用

上面的全域性i變數和init()函式只能用在a.c檔案中,全域性變數sum的作用域只在callme裡。變數j和函式callme()的全侷限擴充到整個工程檔案。所以可以在下面的b.c中用extern關鍵字呼叫。extern告訴編譯器這個變數或者函式在其他檔案裡已經被定義了。

檔案b.c

extern int j;     //呼叫a檔案裡的

extern void callme();  //呼叫a檔案裡的

int main()

extern的另外用法是當c和c++混合程式設計時如果c++呼叫的是c原始檔定義的函式或者變數,那麼要加extern來告訴編譯器用c方式命名函式:

檔案a.cpp呼叫a.c裡面的變數i和函式callme()

extern "c"  //在c++檔案裡呼叫c檔案中的變數

int main()

二,static法則:

a、若全域性變數僅在單個c檔案中訪問,則可以將這個變數修改為靜態全域性變數,以降低模組間的耦合度;

b、若全域性變數僅由單個函式訪問,則可以將這個變數改為該函式的靜態區域性變數,以降低模組間的耦合度;

c、設計和使用訪問動態全域性變數、靜態全域性變數、靜態區域性變數的函式時,需要考慮重入問題;

C語言基礎 extern 與 static

外部函式 如果在當前檔案中定義的函式允許其他檔案訪問 呼叫,就稱為外部函式。c語言規定,不允許有同名的外部函式。內部函式 如果在當前檔案中定義的函式不允許其他檔案訪問 呼叫,只能在內部使用,就稱為內部函式。c語言規定不同的原始檔可以有同名的內部函式,並且互不干擾。1 預設情況下所有函式都是外部函式 ...

c語言static與extern的用法

一,static和extern 大工程下我們會碰到很多原始檔。檔案a.c static int i 只在a檔案中用 int j 在工程裡用 static void init 只在a檔案中用 void callme 在工程中用 上面的全域性i變數和init 函式只能用在a.c檔案中,全域性變數sum的...

C語言static詳解

static作用 修飾函式 區域性變數 全域性變數 在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時...