马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在STM32开辟的过程中常常要声明一些可以在全局使用的变量,通常我们发起只管少使用如许的变量,但是有些缓冲区的声明是不可克制声明玉成局的。
extern 关键字是 C 语言中用于声明 外部变量 或 外部函数 的一个关键字。它的告急作用是告诉编译器某个变量或函数在其他地方已经界说过,只是这里声明它,而不是重新界说它。如许可以在多个源文件之间共享数据或函数。
示例:
假设你有两个文件,一个是 main.c,另一个是 adc.c,你渴望在 main.c 中访问 adc.c 中界说的全局变量 adc_buffer。
文件:adc.c
在 adc.c 中界说全局变量 adc_buffer - // adc.c
- #include "adc.h"
- #define ADC_BUFFER_SIZE 10
- uint16_t adc_buffer[ADC_BUFFER_SIZE]; // 定义全局变量 adc_buffer
复制代码文件:adc.h
在头文件 adc.h 中声明这个变量。使用 extern 关键字表明 adc_buffer 是在其他地方界说的: - // adc.h
- #ifndef ADC_H
- #define ADC_H
- extern uint16_t adc_buffer[]; // 声明外部变量 adc_buffer
- #endif /* ADC_H */
复制代码文件:main.c
在 main.c 中,包罗 adc.h 头文件,并使用 adc_buffer: - // main.c
- #include "adc.h"
- #include "stm32f1xx_hal.h"
- // 在这里使用 adc_buffer
- void someFunction(void)
- {
- // 访问 adc_buffer 并使用它
- adc_buffer[0] = 100; // 假设你想修改第一个元素的值
- }
复制代码使用 extern 声明变量不会分配内存,它只告诉编译器该变量存在于其他地方,内存分配在变量界说的地方完成。
|