Como resolver o erro (error: 'for' loop initial declarations are only allowed in C99 or C11 mode)?

Estou fazendo o exercício Jogo da adivinhação do livro Introdução à Linguagem C e tudo estava indo muito bem até chegar na parte de usar o ‘for’, aparecendo a mensagem de erro abaixo:
error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
for(int i = 1; i <= 3; i++)
^
note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code

Alguém sabe como se resolve isso?

Parece que o livro trata do padrão c99, o teu dev c++ deve estar configurado com o padrão c89, a mensagem de erro fala que o formato como a variável ‘i’ foi declarada só pode ser feito no padrão c99 e no padrão c11, existe duas soluções para você.

1 - Declarar a variável ‘i’ antes do laço for, dessa forma, vou deixar um exemplo simples aqui.
#include <stdio.h>

    int main() {

        int i;
        for(i = 1; i <= 3; i++){
            printf("%d\n", i);
        }

        return 0;   
    }

2 - Configurar o Dev C++ para usar o padrão ansi iso c99 (recomendado para evitar mais problemas de compatibilidade com os exercícios do livro).
– na barra de ferramentas do dev c++ clique em Ferramentas, depois clique em Opções do Compilador , vai abrir uma janelinha, clique na aba Geração de Código, aonde diz Padrão da Linguagem (-std) selecione para ISO C99 e clique em Ok, agora seu código vai funcionar, e não vai aparecer mais essa mensagem de erro.

Bom estudo.

2 curtidas

Muito obrigado, sua resposta resolveu o problema.

Caso deseja compilar no terminar a dica é utilizar o -std=c99 para o gcc.
Exemplo:
gcc -std=c99 -o arquivo.out arquivo.c

1 curtida

Muito bom, me ajudou bastante estava com o mesmo problema!

Usei esta dica, configurei meu DEVc++ e deu certo. Obrigado.