xmy2007415 发表于 2011-6-10 14:25:21

51平台下,全局变量初始化问题

各位大侠,真心求教:
51平台下,全局变量初始化问题??

问题描述:
typedef xdata unsigned char                xBYTE;        //1字节

在文件test.c里这样定义并初始化一个全局数组:
static xBYTE uploadList_test = {
        0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
};
然后在上电进入mian函数(main函数和test.c不是同一个文件)的时候调用test.c里的打印函数打印出变量uploadList_test的值,发现uploadList_test没有值。

51扩成了5个bank的,keil编译器中当把test.c放在comment区和bank4的时候用上述操作打出来是有值的,但是test.c放在bank0~bank3的时候打出来发现没有值!!!但是查看编译后的编译文件uploadList_test是已经有值了,是STARTUP.A51这个文件有问题吗??

问题补充:上述定义改成static code xBYTE uploadList_test={........}直接从rom里面读数据打出来是有值的,但是改成 static const xBYTE uploadList_test={........}打出来也没有值!!

这是怎么回事呢???

xmy2007415 发表于 2011-6-16 15:13:40

回复【楼主位】xmy2007415
-----------------------------------------------------------------------

咋么一个回复也木有??(⊙o⊙)./emotion/em014.gif回复【楼主位】xmy2007415

xmy2007415 发表于 2011-6-17 10:47:06

大虾们都忙去啦吗?

Jason022 发表于 2011-6-17 11:37:47

定义数组的时候不要初始化,把赋初值操作放在main函数里面。

wcjaglzf 发表于 2011-6-17 11:59:29

回复【3楼】Jason022
-----------------------------------------------------------------------

他那个数组是用了static定义,不能在main中操作。。。
页: [1]
查看完整版本: 51平台下,全局变量初始化问题