我已将我的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];
}
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
当index
为8时; riv64[7-index]
是riv64[-1u]
,未定义。消息中的8u
表明index
的类型为unsigned int
,在这种情况下,7-index
将评估为数组范围之外的非常大的值。 (7-8u
将被评估为7u-8u
,相当于-1u
。无符号算术包装,因此生成一个非常大的值UINT_MAX
。)