编程奇葩问题
有如下一段代码,只要把第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=temp;
/* 6 */ msg_buf=0;
/* 7 */ msg_buf=wm->id;
/* 8 */ msg_buf=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 */ }
测了一下,确实,是优化导致的,功能没影响 有可能是编译器优化导致,但不会影响结果。你也可以看下对应的汇编代码核实。 同意楼上的 moyanming2013 发表于 2016-10-10 17:48
有可能是编译器优化导致,但不会影响结果。你也可以看下对应的汇编代码核实。 ...
回头我再试试,多谢了 :):):):):):):):):):):) :):):):):):) 围观围观
围观:lol:lol:lol 围观一下,呵呵
页:
[1]
2