1. 程式人生 > >關於全域性變數,如何被多個.c檔案共享問題

關於全域性變數,如何被多個.c檔案共享問題

這裡有三個問題,都是比較類似的。

1.      如果我要在別的檔案引用本檔案的全域性變數你有哪幾種方法?extern、使用函式傳參、使用引用標頭檔案的方式。

// delay.h 注意這裡絕對不能賦初值,這是標頭檔案中使用的方法。

#ifndef __delay_H__

#define __delay_H__

static int numStatic;//定義了一個靜態的變數

extern int numExtern;//引用外部變數

#endif

注意!!!:1)對於extern,使用的時候,需要在某一個.c檔案中定義一下使用到的全域性變數,才能正常的使用,這是因為沒有實體,但是不能在兩個及以上的檔案中定義。

            2)對於static,使用的時候,需要在某個函式中,最好是main函式的一開始進行變數的初始化,不然沒有意義了。但是這裡有一個問題!那就是,在使用的時候,每個.c檔案包含了這個靜態變數以後,和別的.c檔案並不共享,彷彿得到了這個靜態變數的一份拷貝,相互無關。這個原因應該是,static關鍵字的作用,那就是被修飾的變數本.c可見,其他.c檔案不可見。

3.      如何引用一個已經定義過的全域性變數?答:extern 可以用引用標頭檔案的方式,也可以用extern關鍵字,如果用引用標頭檔案方式來引用某個在標頭檔案中宣告的全域性變理,假定你將那個變寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連線期間報錯。

紅字為個人理解,僅供參考。