Estou tentando resolver o problema 3n + 1 e tenho um for
loop semelhante a este:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Infelizmente, estou recebendo este erro quando tento compilar com o GCC:
3np1.c: 15: erro: declaração inicial do loop 'for' usada fora do modo C99
Não sei o que é o modo C99. Alguma ideia?
Há uma opção de compilador que ativa o modo C99 , que entre outras coisas permite a declaração de uma variável dentro do loop for. Para ligá-lo, use a chave do compilador
-std=c99
Ou, como diz @OysterD, declare a variável fora do loop.
fonte
Para mudar para o modo C99 em CodeBlocks , siga as próximas etapas:
Clique em Project / Build options , então na aba Compiler Settings, escolha a subguia Other options , coloque
-std=c99
na área de texto e clique em Ok .Isso vai virar C99 modo para o seu compilador.
Espero que isso ajude alguém!
fonte
-std=gnu99
como descrito em algumas respostas acima!Também recebi este erro.
não é válido no padrão C89 / C90. Como diz OysterD, você precisa fazer:
Seu código original é permitido em C99 e padrões posteriores da linguagem C.
fonte
@Blorgbeard :
Novos recursos no C99
http://en.wikipedia.org/wiki/C99
Um tour pelo C99
fonte
se você compilar em C, mude
para
Você também pode compilar com o conjunto de chaves C99. Coloque -std = c99 na linha de compilação:
REF: http://cplusplus.syntaxerrors.info/index.php?title= 'for'_loop_initial_declaration_used_outside_C99_mode
fonte
Para qualquer um que tente compilar o código de uma fonte externa que usa um utilitário de compilação automatizado como o Make , para evitar ter que rastrear as chamadas de compilação gcc explícitas, você pode definir uma variável de ambiente. Digite no prompt de comando ou coloque .bashrc (ou .bash_profile no Mac):
Observe que uma solução semelhante se aplica se você se deparar com um cenário semelhante com a compilação C ++ que requer C ++ 11, você pode usar:
fonte
Tive o mesmo problema e funciona, basta declarar o
i
lado de fora do loop:fonte
Jihene Stambouli respondeu à pergunta do OP mais diretamente ... A pergunta era; porque
produzir o erro;
para o qual a resposta é
deveria estar
fonte
Ative o modo C99 em Code :: Blocks 16.01
fonte
Para o Qt-creator: basta adicionar as próximas linhas ao arquivo * .pro ...
fonte