宏定义中使用extern
Posted dongry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宏定义中使用extern相关的知识,希望对你有一定的参考价值。
全局变量的定义是会得到内存分配且可以被其他模块通过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的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发中 const,static,extern用法总结