kq851211 发表于 2021-11-6 11:14

keil C51结构体二维数组赋值问题

本帖最后由 kq851211 于 2021-11-6 13:57 编辑

请问谁遇到过这种问题吗?

我定义了个结构体数组,StruMicMode code tb_mic_mode,结构体定义为
typedef struct
{
u8 flag;
u8 freq;
u16 t_act;      
u16 t_int;      
}StruMicMode;

将这二维数组是4*10大小,并存储到ROM中。数组tb_mic_mode
并未填满10时,未填部分keil并不是填充为0,而是将
tb_mic_mode的数据直接填充到其后。

fpgamcudsp 发表于 2021-11-9 10:16

反正要初始化后使用。不影响吧。

ayb_ice 发表于 2021-11-9 10:43

本帖最后由 ayb_ice 于 2021-11-9 10:45 编辑

被优化了吧

xyz549040622 发表于 2021-11-12 16:47

有可能就是被优化掉了,你加Volatile申明试试

kq851211 发表于 2021-11-19 18:00

xyz549040622 发表于 2021-11-12 16:47
有可能就是被优化掉了,你加Volatile申明试试

没用的,试过加Volatile,也在keil里修改了优化级别,还是一样

kq851211 发表于 2021-11-19 18:01

fpgamcudsp 发表于 2021-11-9 10:16
反正要初始化后使用。不影响吧。

实际的值跟我程序里设置的值不一样呀

weibo718 发表于 2021-11-19 20:24

这个问题很怪,有可能是因为溢出,比如某些地方的内存定义重合了,后面的会冲掉前面的。

hello、C 发表于 2021-11-19 21:54

elife 发表于 2021-11-20 20:59

这个是不是个显示的问题,实际编译后的文件还是会默认不初始化的,都是0xff。
页: [1]
查看完整版本: keil C51结构体二维数组赋值问题