分享

define宏定义细节及uCOS中宏定义技巧

 笔录收藏 2018-06-27
6.为了彻底防止错误的出现,.h应该不产生代码,不用于定义,只用于宏定义、声明等
7.在Keil的设置里面,预处理Define下面写的宏会在每个.c文件中都define过
8.uCOS中的define技巧:
在os_core.c中,有
#ifndef  OS_MASTER_FILE
#define  OS_GLOBALS
#include <ucos_ii.h>
#endif
在其他的.c中,有
#ifndef  OS_MASTER_FILE
#include <ucos_ii.h>
#endif
然后在ucos_ii.h中,有
#ifdef   OS_GLOBALS
#define  OS_EXT
#else
#define  OS_EXT  extern
#endif
​在C文件中添加:#define OS_GLOBALS 即可
我们可以看到,在os_core.c中,ucos_ii.h中带OS_EXT前缀的都变成了定义,而在其他.c中,带OS_EXT前缀的都是声明,这样就完成了一个.h即实现了定义,又实现了声明。
在uCOS中,还可以看到如下的宏使用方式,利用宏去选择编译哪段代码,这样比if else要好,if else还要占用空间。之前编程一直靠人工记,测试这块板子时,注释这句;测试那块板子时,注释那句。以后应该多用宏的方式去选择。
#if OS_TIME_GET_SET_EN > 0
OS_EXT  volatile  INT32U  OSTime;                   /* Current value of system time (in ticks)         */
#endif

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多