C 语言中的外部变量

[复制链接]
发表于 2025-12-15 11:36:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在STM32开辟的过程中常常要声明一些可以在全局使用的变量,通常我们发起只管少使用如许的变量,但是有些缓冲区的声明是不可克制声明玉成局的。
extern 关键字是 C 语言中用于声明 外部变量 或 外部函数 的一个关键字。它的告急作用是告诉编译器某个变量或函数在其他地方已经界说过,只是这里声明它,而不是重新界说它。如许可以在多个源文件之间共享数据或函数。

示例:

假设你有两个文件,一个是 main.c,另一个是 adc.c,你渴望在 main.c 中访问 adc.c 中界说的全局变量 adc_buffer。

文件:adc.c

在 adc.c 中界说全局变量 adc_buffer
  1. // adc.c
  2. #include "adc.h"
  3. #define ADC_BUFFER_SIZE 10
  4. uint16_t adc_buffer[ADC_BUFFER_SIZE];  // 定义全局变量 adc_buffer
复制代码
文件:adc.h

在头文件 adc.h 中声明这个变量。使用 extern 关键字表明 adc_buffer 是在其他地方界说的:
  1. // adc.h
  2. #ifndef ADC_H
  3. #define ADC_H
  4. extern uint16_t adc_buffer[];  // 声明外部变量 adc_buffer
  5. #endif /* ADC_H */
复制代码
文件:main.c

在 main.c 中,包罗 adc.h 头文件,并使用 adc_buffer:
  1. // main.c
  2. #include "adc.h"
  3. #include "stm32f1xx_hal.h"
  4. // 在这里使用 adc_buffer
  5. void someFunction(void)
  6. {
  7.     // 访问 adc_buffer 并使用它
  8.     adc_buffer[0] = 100;  // 假设你想修改第一个元素的值
  9. }
复制代码
使用 extern 声明变量不会分配内存,它只告诉编译器该变量存在于其他地方,内存分配在变量界说的地方完成。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表