#define EXTERN

#define EXTERN 

表示  把所有的EXTERN都换成空格 这样就解决了

变量的文件作用域 

不易被确定 的 问题啦


关于EXTERN的用法 记录一下

EXTERN  external variable 外部变量

该关键字诉编译器,其声明的函数和变量可以在本模块或其它模块中使用

extern int a;
仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。
--------------------------------------------------------------------------------
extern的利弊

在多个函数必须共享一个变量是或者少数几个函数共享大量变量时 外部变量是很有用的

在大多数情况下 对函数而言 通过形参进行通信比通过共享变量的方法更好 下面列举的是原因

  ·在程序维护期间 如果改变外部变量 那么将需要检查同一文件走红的每个函数 已确认该变化如何对函数参数产生影响

· 如果外部变量被赋了错误的值 可能很难确定出错的函数 就好像处理大型聚会上的谋杀案时 很难缩小嫌疑人范围一样

·很难再其他程序中复用依赖与外部变量的函数 依赖外部变量的函数不是“独立的” 为了在另一个程序中使用该函数,必须带上此函数需要的外部变量                  --C语言程序设计现代方法

-------------------------------------------------------------------------------

``` #ifndef __MYIIC_H #define __MYIIC_H #include "sys.h" ////////////////////////////////////////////////////////////////////////////////// extern uint32_t aun_ir_buffer[500]; //IR LED sensor data extern uint32_t aun_red_buffer[500]; //Red LED sensor data extern int32_t n_ir_buffer_length; //data length extern int32_t n_sp02; //SPO2 value extern int8_t ch_spo2_valid; //indicator to show if the SP02 calculation is valid extern int32_t n_heart_rate; //heart rate value extern int8_t ch_hr_valid; //indicator to show if the heart rate calculation is valid extern unsigned char HR_TH_HIGH; extern unsigned char HR_TH_LOW; #define MAX30102_INT PAin(7) #define I2C_WR 0 /* 写控制bit */ #define I2C_RD 1 /* 读控制bit */ #define max30102_WR_address 0xAE #define I2C_WRITE_ADDR 0xAE #define I2C_READ_ADDR 0xAF //register addresses #define REG_INTR_STATUS_1 0x00 #define REG_INTR_STATUS_2 0x01 #define REG_INTR_ENABLE_1 0x02 #define REG_INTR_ENABLE_2 0x03 #define REG_FIFO_WR_PTR 0x04 #define REG_OVF_COUNTER 0x05 #define REG_FIFO_RD_PTR 0x06 #define REG_FIFO_DATA 0x07 #define REG_FIFO_CONFIG 0x08 #define REG_MODE_CONFIG 0x09 #define REG_SPO2_CONFIG 0x0A #define REG_LED1_PA 0x0C #define REG_LED2_PA 0x0D #define REG_PILOT_PA 0x10 #define REG_MULTI_LED_CTRL1 0x11 #define REG_MULTI_LED_CTRL2 0x12 #define REG_TEMP_INTR 0x1F #define REG_TEMP_FRAC 0x20 #define REG_TEMP_CONFIG 0x21 #define REG_PROX_INT_THRESH 0x30 #define REG_REV_ID 0xFE #define REG_PART_ID 0xFF void max30102_init(void); void max30102_reset(void); u8 max30102_Bus_Write(u8 Register_Address, u8 Word_Data); u8 max30102_Bus_Read(u8 Register_Address); void max30102_FIFO_ReadWords(u8 Register_Address,u16 Word_Data[][2],u8 count); void max30102_FIFO_ReadBytes(u8 Register_Address,u8* Data); extern void MAX_IIC_WriteBytes(u8 WriteAddr,u8* data,u8 dataLength); void maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data); void maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data); void maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led); /*读取心率*/ extern void MAX30102_READ_HEART_RATE(void); #endif```注释此代码
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值