2025-11-08 06:24:39
STM32里要定义外部变量,就是说让不同文件都能用同一个变量。比如写完main.c后,其他文件要改这个变量,得先写extern int count;然后在头文件里声明。这样编译器就知道这个变量存在,不会报错。
为什么得用extern呢?因为每个C文件都是独立编译的,编译器不知道其他文件有变量。比如main.c里声明int count=10;,如果other.c也要用这个变量,编译器会认为other.c里有重复定义。这时候就要在头文件写extern int count;告诉编译器这个变量在main.c里。根据《ARM Cortex-M3/M4开发指南》第5.3节,extern关键字会让变量存储在代码区(.text段),占用4字节(32位架构)。比如定义extern float temp;,其他文件修改temp的值,实际就是改main.c里的那个float变量。如果不用extern,链接时会报"unresolved external symbol"错误。
本题链接: