天天看點

C語言全局變量定義方法

C語言全局變量定義方法

    今天調試系統的時候,需要定義幾個全局位變量,定義好後一編譯,發現錯誤一大堆,錯誤基本都是位變量定義時産生的。以前也定義過全局變量啊,但是先前怎麼沒錯誤?瞎折騰了一會最後還是發現問題出在細節上面了。以前隻是僥幸沒遇到而已。今天做個總結,以後再忘記了就回來直接查一下。

     我們都知道定義在函數外部的變量就叫做全局變量,但是通常隻有一個C檔案和一個H檔案的時候那樣定義是不會出問題的。一個大的系統會包含好多個.C檔案和.H檔案,每個.C檔案都有可能會通路全局變量,是以全局變量在定義的時候就要稍微做下改變了。通常的做法是建立一個包含系統所有全局變量的.H檔案,系統用到的所有全局變量都定義在該檔案内,檔案名可以用Global修飾一下。在該檔案中定義某個全局變量的時候需要用extern聲明該變量為外部變量。比如要定義SysEventCounter标志為unsigned char型的全局變量可以這樣定義:

extern unsigned char SysEventCounter; <----這裡是關鍵,不能對該變量指派,隻能聲明,指派就會報錯。

上述聲明是寫在.H檔案中的。其他.C檔案若要用到該變量,直接包含該.H檔案就可以了

如果想要賦初值,可以在用到它的.C檔案中這樣寫:

unsigned char SysEventCounter = 0;

不用賦初值時,直接

unsigned char SysEventCounter;

就可以了。注意:隻需要在一個.C檔案中寫即可,其他.C檔案直接可以用。如果在其他.C檔案中也這樣寫會産生重複定義的錯誤。

全局變量對變量的類型不限制,任何類型都可以,隻要按照上述方法定義就不會有錯誤。

繼續閱讀