我已经将我的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
。)