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是全局变量吗,为什么? 共3条
1/1 1 跳转至页
全局变量
只看楼主 1楼
关键词: 全局变量
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 所以是全局变量
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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| PCF8574功能模块及其使用被打赏¥20元 | |
| 传感器LSM6DSO及LIS3MDL的功能检测被打赏¥18元 | |
| LPS25HB气压传感器及其检测被打赏¥18元 | |
| HTS221温湿度传感器及其检测被打赏¥18元 | |
| 【S32K3XX】HSE FW 版本更新被打赏¥21元 | |
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
我要赚赏金
