编程wm的值会被修改

2019-07-14 16:07发布

有如下一段代码,只要把第3行和第四行注释掉,运行到第五行时,wm的值就会被修改。之前已经调用过一次wm=MUI_GetWm(data->parent_id);wm是一个指针,指向一个结构体。

/* 1 */ if(save_flag[(wm->id)]!=1){
/* 2 */        save_flag[(wm->id)]=1;
/* 3 */        temp = wm->context.start_id;
/* 4 */        wm=MUI_GetWm(data->parent_id);
/* 5 */        msg_buf[MSG_HEAD_LENGTH]=temp;
/* 6 */        msg_buf[MSG_HEAD_LENGTH+1]=0;
/* 7 */        msg_buf[MSG_HEAD_LENGTH+30]=wm->id;
/* 8 */        msg_buf[MSG_HEAD_LENGTH+31]=DATA_SAVE_FLASH;        
/* 9 */        M_FlashEraseSector(DATA_FLASH_BASE/FLASH_SECTOR_SIZE+wm->context.start_id);
/* 10 */        M_FlashBufferWrite(msg_buf+MSG_HEAD_LENGTH, DATA_FLASH_BASE+wm->context.start_id*FLASH_SECTOR_SIZE, data->len+DATA_PARAMS_SIZE);
/* 11 */ }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
7762642422d
1楼-- · 2019-07-14 22:13
有可能是编译器优化导致,但不会影响结果。你也可以看下对应的汇编代码核实。
tianyou15
2楼-- · 2019-07-15 03:25
 精彩回答 2  元偷偷看……
dingyang598
3楼-- · 2019-07-15 09:25
7762642422d 发表于 2018-11-12 10:33
有可能是编译器优化导致,但不会影响结果。你也可以看下对应的汇编代码核实。

回头我再试试,多谢了
陈囝囝100
4楼-- · 2019-07-15 14:20
:)
cmh20
5楼-- · 2019-07-15 20:07
qqweqwc
6楼-- · 2019-07-15 23:25
围观围观

一周热门 更多>