宏定義中使用extern


全局變量的定義是會得到內存分配且可以被其他模塊通過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,這樣用戶就可以調用外部全局變量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM