这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 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 跳转至

回复

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