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

共5条 1/1 1 跳转至

关于全局变量使用的疑惑

菜鸟
2014-08-21 23:37:45     打赏
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是全局变量吗,为什么?
我的理解
#ifdef  MAIN_REGS
#define              //定义变量
#else
#define _EXTERN     extern  //声明变量
#endif

这句话我的理解是 

如果定义了   MAIN_REGS  那么 _EXTERN  等于空
如果没有定义 MAIN_REGS  那么 _EXTERN  等于extern
而在主函数中#define   MAIN_REGS 这句话的意思是 定义 MAIN_REGS是空,也就是   MAIN_REGS被定义,
那么 _EXTERN 就是被定义为空,而不是全局变量.
 


专家
2014-08-22 09:20:10     打赏
2楼
感觉-Extern 应该定义的一。是不是少了

专家
2014-08-22 09:20:11     打赏
3楼
感觉-Extern 应该定义的一。是不是少了

菜鸟
2014-08-22 22:15:28     打赏
4楼

没有少,就是这样的!所以才不明白!

 


菜鸟
2014-08-26 11:23:50     打赏
5楼

难道没有人跟回答这个弱弱的问题吗?



共5条 1/1 1 跳转至

回复

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