之前一直没怎么关注过ucos里全局变量的定义技巧,也以为跟我们平常一样,简单的定义和extern,今天看文档的时候,发现源码中还使用了这么个小技巧。
在头文件定义所有的全局变量,如果只是简单这么定义~就会出现重定义的问题,所以代码中做了如下处理:
在每个全局变量类型前面加个宏,OS_EXT
而这个宏又是通过
#ifdef OS_GLOBALS
#define OS_EXT
#else
#define OS_EXT extern
#endif
来区别定义的
当我们在其中某个文件需要定义这个变量时,只要在包含这个头文件时,#define OS_GLOBALS 即可