Was ist die Erklärung für "Warnung: Unter der Annahme, dass die Schleife nicht unendlich ist"

ch hatte gerade die Entscheidung getroffen, möglichst viele Variablen von @ zu änderunsigned zuint und beim erneuten Kompilieren des fraglichen Codes wurde diese Warnmeldung angezeigt:

freespace_state.c:203: warning: assuming that the loop is not infinite

Die betreffende Zeile:

for (x = startx; x <= endx; ++x, ++xptr)

Diese Schleife besteht aus 60 Codezeilen (einschließlich Leerzeichen / Klammern usw.) und hat eingoto darin und mindestens ein Vorkommen voncontinue.

In diesem Fall bin ich dankbar, dass GCC davon ausgeht, dass diese Schleife nicht unendlich ist, da sie niemals auf unbestimmte Zeit wiederholt werden sollte.

Was versucht GCC mir hier zu sagen?

Die Grammatik der Warnung deutet fast darauf hin, dass die Warnung im Kontext einer anderen Warnung verwendet werden sollte, in diesem Kontext gibt es jedoch keine.

[bearbeiten Es ist alles ganz meine eigene schuld. Ich habe hier irgendwo Optimierungs- und Warnoptionen aus einer Frage gestohlen, ohne sie wirklich zu verstehen, und hatte sie seitdem vergessen.

See Mark Rushakoffs Antwort, und zusätzlich habe ich auch @ verwend-Wunsafe-loop-optimizations, um explizit zu warnen, wenn GCC Annahmen über eine Schleife trifft. Sehenhttp: //gcc.gnu.org/onlinedocs/gcc/Optimize-Options.htm

Antworten auf die Frage(6)

Ihre Antwort auf die Frage