我的问题:C语言如何定义跨文件全局变量。
我有两个C文件和对应的H文件,mem_management.c,mem_mangenent.h,comm.c,comm.h
我在mem_management.c文件中定义uint8_t freeMem[0x800];变量。
在comm.c中定义 extern *freeMem;
uint32_t Address = 0x0801C000;
uint8_t data;
memset(freeMemo,0,FLASH_PAGE_SIZE +96);
progm_count = 96;
for(uint16_t i=0;i<progm_count;i++)
{
data = *(__IO uint8_t *)Address++;
freeMemo[i] = data;
}
也就是在通讯开始后接收数据,
然后在另一个函数中也有对函数的操作。发现freeMemo先前接收的数据消失了,好像没有接收过数据一样。
for(uint16_t i=0;i<dat_length;i++){
ASC_HEX[receive_buf[i*2+11] -0x30];
freeMemo[progm_count++] = (ASC_HEX[receive_buf[i*2 + 10] -0x30] << 4) +
ASC_HEX[receive_buf[i*2+11] -0x30];
}
if(progm_count >= FLASH_PAGE_SIZE)
{
for(uint16_t i=0;i<FLASH_PAGE_SIZE;i++)
{
flashPage.byte[i] = freeMemo[i];
}
memset(freeMemo,0,FLASH_PAGE_SIZE +96);
progm_count = 0;
}//write end
请教这是什么原因,如何能够定义一个可以跨文件的全局变量
|