我已经将我的GCC编译器从4.1.2升级到4.8.3,当我用4.8.3版本编译源代码时,我面临以下问题。

错误:
迭代8u调用未定义的行为[-Werror = aggressive-loop-optimizations]

{
uint index;
for ( index =0 ; index<BLOCK_SIZE; index++)
ltoP->kdlllp= riv64[7-index];
}

谁能帮助我解决这个问题?

最佳答案

index为8时; riv64[7-index]riv64[-1u],未定义。消息中的8u建议index的类型为unsigned int,在这种情况下7-index的计算结果将是数组边界之外的非常大的值。 (7-8u将被评估为7u-8u,它等于-1u。无符号算术换行,因此产生非常大的值UINT_MAX。)

07-24 09:51
查看更多