频道栏目
首页 > 资讯 > 其他综合 > 正文

uC/OS-II源码解析(四)

17-04-10        来源:[db:作者]  
收藏   我要投稿
uC/OS-II源码解析(四):2. uCOS_II.C文件,说明:如果你的工程中添加了uCOS_II.C文件,则不要添加该文件下包含的那些C文件否则会出现重复定义错误,如果添加了各C文件则不要添加uCOS_II.C文件。
/*
** ver: 2.52
** file: uCOS_II.C
** brief: C文件集合
*/

#define  OS_GLOBALS                             /* 声明全局变量 防止重复定义             */
#include "includes.h"                           /* 包含"includes.h"头文件                */


#define  OS_MASTER_FILE        /* 防止以下文件重复定义宏OS_GLOBALS和重复包含"includes.h" */
#include "\software\ucos-ii\source\os_core.c"   /* 包含 "os_core.c" 文件                 */
#include "\software\ucos-ii\source\os_flag.c"   /* 包含 "os_flag.c" 文件                 */
#include "\software\ucos-ii\source\os_mbox.c"   /* 包含 "os_mbox.c" 文件                 */
#include "\software\ucos-ii\source\os_mem.c"    /* 包含 "os_mem.c" 文件                  */
#include "\software\ucos-ii\source\os_mutex.c"  /* 包含 "os_mutex.c" 文件                */
#include "\software\ucos-ii\source\os_q.c"      /* 包含 "os_q.c" 文件                    */
#include "\software\ucos-ii\source\os_sem.c"    /* 包含 "os_sem.c" 文件                  */
#include "\software\ucos-ii\source\os_task.c"   /* 包含 "os_task.c" 文件                 */
#include "\software\ucos-ii\source\os_time.c"   /* 包含 "os_time.c" 文件                 */

1. OS_GLOBALS栗子

ucos_ii.h文件有如下定义:

. . .
#ifdef   OS_GLOBALS               
#define  OS_EXT
#else
#define  OS_EXT  extern
#endif
. . .
OS_EXT  INT32U            OSCtxSwCtr;
. . .

includes.h文件中有如下定义:

#include    "ucos_ii.h" 

os_core.c文件有如下定义:

. . .
#define  OS_GLOBALS  
#include "includes.h"     
. . . 

因为os_core.c中定义了OS_GLOBALS这个宏,所以OS_EXT宏为空,即os_core.c文件编译结果如下

INT32U            OSCtxSwCtr;

结果是在文件os_core.c中定义变量OSCtxSwCtr,其他.c文件不会定义宏OS_GLOBALS,所以OS_EXT的值为extern,即其他.c文件编译时结果如下:

extern  INT32U            OSCtxSwCtr;

结果是在其他.c中声明变量,因为变量已经定义过了。

相关TAG标签
上一篇:HDU 2044 一只小蜜蜂...(递推)
下一篇:jQuery三种常见选择器
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站