Qual é a explicação para "aviso: assumindo que o loop não é infinito"
Acabei de tomar a decisão de alterar tantas variáveis deunsigned
paraint
e ao recompilar o código em questão, foi recebido por esta mensagem de aviso:
freespace_state.c:203: warning: assuming that the loop is not infinite
A linha em questão:
for (x = startx; x <= endx; ++x, ++xptr)
Esse loop possui 60 linhas de código (incluindo espaços em branco / colchetes etc.) e possui umgoto
dentro dele e pelo menos uma ocorrência decontinue
.
Nesse caso, acho que sou grata pelo fato de o GCC estar assumindo que esse loop não é infinito, porque nunca deve ser executado indefinidamente.
O que o GCC está tentando me dizer aqui?
A gramática do aviso é quase sugestiva de que o aviso deve ser recebido no contexto de algum outro aviso, mas não há nenhum nesse contexto.
[editar] É tudo completamente minha culpa. Eu roubei algumas opções de otimização e aviso de uma pergunta aqui em algum lugar sem realmente entendê-las, e desde então as esqueci.
Veja a resposta de Mark Rushakoff e, além disso, eu também usei-Wunsafe-loop-optimizations
avisar explicitamente se o GCC está fazendo suposições sobre um loop. Vejohttp://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html