2011-09-15 114 views
0

出于某种原因,我得到一个错误:语句对此行没有影响。声明没有效果

for (j = idx; j < iter ; j + increment) { 
     printf("from loop idx = %i", (int)idx); 
     func(ctxt, j); 
    } 
+0

这真的是一个错误吗?不是一个警告? – 2011-09-15 20:59:16

+0

这不是一条线。 –

回答

9

你大概的意思是写j += increment而不是j + increment

+0

谢谢,就是这样。 ...我感到羞愧,我没有抓住它。必须很累 – Dave

1

你会得到这个错误?多酷,我希望我的编译器做到了。基本j + increment将返回这两个的总和,但j不会被修改,因此您的循环可能会永远运行。

+0

雅我在Mac上使用Xcode。试试吧:) – Dave

+0

如果你有'gcc','-Werror'选项(带'-Wall')将警告转化为错误; '-Werror = unused-value'将这个问题中的具体警告转为错误。 – pmg

4

更换

j + increment 

随着

j += increment 
5

我认为你的意思j += increment,为j + increment实际上并没有改变j或是没有任何副作用 - 它是没有影响的说明,这是编译器告诉你的

+0

它甚至可能被编译器优化过,所以它什么都不做,甚至没有评估。 – 2011-09-15 21:00:58

+0

如果在森林里增加'j',并且没有人听到板载声卡屏蔽不好的噪音,它真的发出了声音吗? –

0

很明显你的意思是+ =,但如果不是这样,那么'vola平铺'限定符应该防止警告。