私はこのようなループに起因する私のコードのバグを見つけるのに苦労でした:g ++でint i = iのエラー/警告を生成する方法は?
for (int i=i;i<5;i++){
// ...
}
私は-O2 -Wall
とG ++ 4.7.2を使用していますが、何の警告/エラーが表示されませんが。 -O2
と組み合わせて、このような場合の警告を生成するコンパイラフラグもありますか?
私はいくつかの関連の質問が見つかりました:それは議論されているコメントに hereを何-O2
がない場合、そのG ++は-Wall
との警告を示しています。しかし、問題のあるループは、警告が表示されないことを説明する-O2
で最適化されているため、この質問は特に重要です。私の場合、ループは最適化されていませんが、警告は表示されません。 this questionとthis oneも関連しています。これらの質問を読んだ後に、私はC++がそのような非感覚を許す理由を理解しています(私は全く意味がないのでhereが好きです)。 -O2 -Wall
と
int main()
{
int j = 0;
for (int i=i; i<5; ++i)
j++;
return 0;
}
をコンパイルするとき
Upvotingの質問を、それは私が私のgccが同じ問題を抱えていると私はより多くの最近のものを使用する必要があり実感しましたので。 – jdarthenay