內(nèi)核代碼中利用宏定義來區(qū)分和控制全局變量中定義和聲明: 1、在uCOS_II.h 文件中明確定義 #ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif 意思是說:如果在包含頭文件uCOS_II.h之前宏定義了OS_GLOBALS那么OS_EXT將替換為空(即為全局變量定義),否則替換為extern(即為全局變量聲明)。 2、又有在uCOS_II.c中,包含了uCOS_II.h ,并在其前面宏定義了OS_GLOBALS (即全局變量的聲明只在該文件中被定義了),且宏定義了OS_MASTER_FILE,然而在其他文件要包含uCOS_II.h文件之前,也有宏定義確定包含該文件里的只是全局變量的聲明,通過下面宏定義實現(xiàn): #ifndef OS_MASTER_FILE #define OS_GLOBALS #include <ucos_ii.h> #endif 3、在ucos_ii.h中包含內(nèi)核中所有函數(shù)的聲明,在ucos_ii.c中又是這么寫的: #define OS_GLOBALS /* Declare GLOBAL variables */ #include <ucos_ii.h> #define OS_MASTER_FILE /* Prevent the following files from including includes.h */ #include <os_core.c> #include <os_flag.c> #include <os_mbox.c> #include <os_mem.c> #include <os_mutex.c> #include <os_q.c> #include <os_sem.c> #include <os_task.c> #include <os_time.c> 意思就是:包含了各模塊的 *.c 源文件 ,其他各模塊的函數(shù)實現(xiàn)分別在各模塊中的c文件中實現(xiàn)。 4、這一招就是uscos-ii的奇淫訣竅 |
|