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我们可以看到,在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 |
|