请教:extern是否重新分配地址,

2020-01-20 19:03发布

同事离职,接手其工作,C文件有个接收数组,

1:
主程序 定义: unsigned char   receive_sbuf[8] ;
子程序 定义  extern unsigned char   receive_sbuf[8] ;

此时,该系统与上位机通讯正常。

2:
后来我将所有的函数整合成一个大函数,因为疏忽,在大函数中同时有
unsigned char   receive_sbuf[8] ;
extern unsigned char   receive_sbuf[8] ;
两个定义,编译器不报警,系统正常工作。

3:
后来将 extern unsigned char   receive_sbuf[8] ; 删掉,此时通讯不正常。

最重要的是:  在接收数据时,不限制接收字节数量,并且有  if(receive_sbuf[14] >0x12)  这样的判断条件,在1、2情况下正常  在3的情况下就不正常。

编译环境 :keil 4.72.9.0   单片机  stc12c5a60s2
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。