这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» MCU» 全局变量

共3条 1/1 1 跳转至

全局变量

菜鸟
2014-08-20 21:01:29 打赏
main.c 文件 #define MAIN_REGS #include "includes.h" VAR.h文件 #ifndef __VAR_H_ #define __VAR_H_ #ifdef MAIN_REGS #define _EXTERN //定义变量 #else #define _EXTERN extern //声明变量 #endif /******************************************************************************/ #include "type.h" /******************************************************************************/ /******************************************************************************/ enum _ChgSt { CHG_WAIT, CHG_PLUGIN, }; /******************************************************************************/ _EXTERN volatile struct { enum _ChgSt State; u8 msInit; u8 secInit; } sChg; (1)在main.c中为什么需要定义#define MAIN_REGS运行才正确正确, (2)如果定义#define MAIN_REGS sChg是全局变量吗,为什么?



关键词: 全局变量

专家
2014-08-20 21:58:56 打赏
2楼
(1)在main.c中为什么需要定义#define MAIN_REGS运行才正确正确,
因为在下面的定义中使用了 MAIN_REGS 和 _EXTERN 所以需要定义
#ifdef MAIN_REGS #define _EXTERN //定义变量 #else #define _EXTERN extern //声明变量 #endif
(2)如果定义#define MAIN_REGS sChg是全局变量吗,为什么?
你这个sChg是个机构体,定义如下:
_EXTERN volatile struct { enum _ChgSt State; u8 msInit; u8 secInit; } sChg;
由于使用了 _EXTERN 所以是全局变量


菜鸟
2014-08-21 10:47:05 打赏
3楼
#ifdef MAIN_REGS #define //定义变量 #else #define _EXTERN extern //声明变量 #endif
这句话我的理解是
如果定义了 MAIN_REGS 那么 _EXTERN 等于空
如果没有定义 MAIN_REGS 那么 _EXTERN 等于extern
而在主函数中#define MAIN_REGS 这句话的意思是 定义 MAIN_REGS是空,也就是 MAIN_REGS被定义,
那么 _EXTERN 就是被定义为空,而不是全局变量.

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]