全局變量的定義是會得到內存分配且可以被其他模塊通過C語言中extern關鍵字調用的變量。所以,必須在 .C 或 .H 文件中定義,此種方法很容易導致錯誤。
以下為UCOSIII中定義全局變量的方法:
部分源碼(Os.h文件中):
#ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif
Os.h文件中定義了全局變量OS_EXT;在文件"Os_var.c"文件中定義了全局變量OS_GLOBALS
源碼如下(Os_var.c文件中)
#define OS_GLOBALS
當編譯器處理"Os_var.C"文件時,它使OS_EXT為空,因為OS_GLOBALS已經在"Os_var.c"定義。所以編譯器給每個全局變量分配內存空間,而當編譯器處理"Os.h"文件時,OS_GLOBALS 沒有定義,OS_EXT被定義為extern,這樣用戶就可以調用外部全局變量。