码迷,mamicode.com
首页 > 其他好文 > 详细

宏定义中使用extern

时间:2020-01-12 19:55:28      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:def   als   通过   用户   编译器   color   ucosiii   var   错误   

全局变量的定义是会得到内存分配且可以被其他模块通过C语言中extern关键字调用的变量。所以,必须在 .C 或 .H 文件中定义,此种方法很容易导致错误。

以下为UCOSIII中定义全局变量的方法:

部分源码(Os.h文件中):

#ifdef   OS_GLOBALS
#define  OS_EXT
#else
#define  OS_EXT  extern
#endif

Os.h文件中定义了全局变量OS_EXT;在文件"Os_var.c"文件中定义了全局变量OS_GLOBALS

源码如下(Os_var.c文件中)

#define   OS_GLOBALS

当编译器处理"Os_var.C"文件时,它使OS_EXT为空,因为OS_GLOBALS已经在"Os_var.c"定义。所以编译器给每个全局变量分配内存空间,而当编译器处理"Os.h"文件时,OS_GLOBALS 没有定义,OS_EXT被定义为extern,这样用户就可以调用外部全局变量。

宏定义中使用extern

标签:def   als   通过   用户   编译器   color   ucosiii   var   错误   

原文地址:https://www.cnblogs.com/dongry/p/12183442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!