分享

UCOS-II中 OS_EXT 对全局变量的定义和声明

 豆芽爱尚阅 2014-05-13
 内核代码中利用宏定义来区分和控制全局变量中定义和声明:
 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文件之前,也有宏定义确定包含该文件里的只是全局变量的声明,通过下面宏定义实现:
#ifndef  OS_MASTER_FILE
#define  OS_GLOBALS
#include <ucos_ii.h>
#endif

3、在ucos_ii.h中包含内核中所有函数的声明,在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 源文件 ,其他各模块的函数实现分别在各模块中的c文件中实现。
4、这一招就是uscos-ii的奇淫诀窍

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多