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 就是被定义为空,而不是全局变量.