今天我在优化代码的时候。出现了问题。如下:
//----------------PERIPH.C---------------------
/* 读寄存器,参数 地址 返回内容*/
unsigned int ReadCMD(unsigned char addr)
{
unsigned int temp;
XCS_L();
WriteByte(0x03);
WriteByte(addr);
temp = ReadByte();
temp <<= 8;
temp += ReadByte();
XCS_H();
return temp;
}
//------------------MAIN.C-----------------
#define ReadHDAT0() ReadCMD(SPI_HDAT0)
hdat0=ReadHDAT0();//读MP3文件帧头信息
假如我不用o3优化项。我读出的数据是正确的。但用的话,每次读出来的数据都错。而且都不相同(数值和正确的数值相差不大,可以说在正确数值下波动)。
然后我就查了对应o3的资料,书本有如下一段:
“-o3:表示最大可能优化级别。各种循环优化都执行了,并且各种文件级性质也用来改善性能。”
请问:
1、假如我要选用o3优化的话,我该怎样做才不出错?
关于编译优化选项o3的问题
最新推荐文章于 2025-11-16 04:39:44 发布
在使用-o3优化时,代码可能会出现错误,因为编译器进行了循环优化、变量消除等操作,导致中间变量无法观察。优化可能导致变量存储位置改变,循环行为变化,甚至影响到库函数的行为。为解决这个问题,可以尝试分模块使用-O3优化,逐步定位错误源,确保代码严谨性。不具备良好优化意识的工程师难以胜任DSP工程。

最低0.47元/天 解锁文章
321

被折叠的 条评论
为什么被折叠?



