unsigned
問題のコードをからにint
、そして再コンパイル時にできるだけ多くの変数を変更するという決定を下したところ、次の警告メッセージが表示されました。
freespace_state.c:203: warning: assuming that the loop is not infinite
問題の行:
for (x = startx; x <= endx; ++x, ++xptr)
このループは60行のコード(空白/角かっこなどを含む)であり、そのgoto
中に少なくとも1つの。がありcontinue
ます。
この場合、GCCがこのループが無限ではないと想定していることに感謝します。なぜなら、無限にループすることは決してないからです。
GCCはここで私に何を伝えようとしていますか?
警告の文法は、警告が他の警告のコンテキスト内で取られるべきであることをほぼ示唆していますが、そのコンテキスト内には何もありません。
[編集] それはすべて完全に私自身のせいです。私はここの質問からいくつかの最適化と警告のオプションを実際に理解せずに盗み、それ以来それらを忘れていました。
-Wunsafe-loop-optimizations
Mark Rushakoffの答えを参照してください。さらに、 GCCがループについて仮定を行っているかどうかを明示的に警告するためにも使用しました。http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.htmlを参照してください