工具/软件:Code Composer Studio
你(们)好
CCS 3.3 .82.13
编译器4.1 ........
对于以下局部变量 ALL和Half。
1.调试环境中的值只有在变量前面加上volatile或none optimize时才是正确的。
int64半全2quan (Int32靶,int64 NOW,UINT16轴)
{
易失性
int64 all,half;
int64 TMP;
// 长LSD;
// LSD=0x800万;
// min=(int64)LSD*POSITION数值器1/POSITION Divisor1;
// lsd=0x7fffffffffff;
// max=(Llong Long) LSD*POSIENT_Numerator1/POSIENT_Divisor1;
// half =(int64) 0x800万;
// half=(int64)Half*POSIENT_Numerator1/POSITION Divisor1;
all=(int64)0x1亿;
all=(int64)all*POSIENT_Numerator1/POSIENT_Divisor1;
半=全部;
half =半模>>1;//(int64)all>>1);
tmp =(int64)target*POSITION _Numerator1/position Divisor1-now;
IF (TMP>Half) TMP-=全部;
否则,如果(TMP<-Half) TMP+=all;
返回TMP;
}
2.如果将优化级别设置为3或删除易失性。 值错误。
能否告诉我这是由旧编译器引起的吗? 为什么我们必须为 局部变量添加volatile? 谢谢。
