C语言中关键词extern用法的一个注意事项

在做项目开发时,在一个单片机c语言程序(用keil开发)中,如果有两个c文件,在其中一个c文件(设为a文件)定义了一个全局变量v,并在此文件里的程序段里修改此变量,在另外一个c文件(设为b文件)里用外部变量(extern)的方法引用此变量,并读取变量v,但是,在b中读取时结果变量v出错,出现乱值。
什么原因?
v在b文件里作为外部变量,被认为分配的地址在其他地方,在b文件里只是读取没有写入,实际就没有分配内存地址,从而出错。
怎么修改?
方法1,在b文件中定义此变量v,在a文件中用外部变量的方式引用变量v,在a文件里修改变量v,在b文件中回读变量v,结果正常。
这样,在b文件里定义了变量v,分配了内存地址,在a文件中引用外部变量v并进行了写入操作,也分配了内存地址,所以不出错。
方法2,最优方法,在一个c文件(如a.c)里定义全局变量v,在其h文件(a.h)里再引用为外部变量,在用到变量v的其他c文件里include a.h,这样的话不管是否读写都无问题。当然,a.c里也要include a.h。
注意:全局变量才能被外部引用,静态变量和局部变量不行的。

ddr4和ddr3的区别在哪里
LSI推出6Gb/s SAS RoC芯片
TD联盟预测终端进展 称三季度可达商用水平
6.2亿部设备采用 Red Bend 移动软件管理客户端
我国目前在机器人制造领域还呈现出两极分化的态势
C语言中关键词extern用法的一个注意事项
苹果Apple Watch全新专利:该技术目前仅在概念阶段
苹果屏下传感器相关专利曝光
【应用】破解光伏逆变器功率及效率测量难题!
PCB单面板和双面板驳图技巧
HDBR-I变压器空负载特性测试仪操作方法
行程开关与按钮双重控制380V水泵的控制电路
研华科技公司助力智能医疗应用落地
利用16位DAC实现20位分辨率的设计
智能家居领域有什么误解的点
“五眼”情报密谈,随后陆续开始围堵华为?
一下科技致力为用户生产优质短视频内容
双向循环链表创建代码
智能医疗提高医生阅片准确率和诊断水平
电子变压器常见故障及解决办法的介绍