4
respostas

Aparentemente não posso usar o for

Caras, eu tava compilando no ubuntu e a coisa toda tava funfando de boa. Mas minha placa mãe foi pro espaço e tô tendo muitos problemas nas compilações. Aparentemente não posso usar o for. Segue a mensagem do compilador:

"C:\Users\LUCAS\Documents\Curso de C\adivinhacao\teste.c|23|error: 'for' loop initial declarations are only allowed in C99 or C11 mode|"

Segue meu código até a parte que parei na aula:




#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main ()

{
    char palavrasecreta [20];

    sprintf (palavrasecreta, "MELANCIA");

    printf("%s\n",palavrasecreta);

    int acertou = 0;
    int enforcou = 0;

    do {
            char chute;
            printf("Chute uma letra:\n");
            scanf("%c",chute);
            for (int i = 0; i < strlen(palavrasecreta); i++){

                if (palavrasecreta [i] == chute){
                    printf("A posição %d tem a letra %c",palavrasecreta,chute);
                }
            }



    } while (!acertou && !enforcou);




return (0);

}
4 respostas

Oi Lucas,

Seu compilador está provavelmente configurado para o padrão C90 (também conhecido como ANSI C). Neste padrão não é permitido a declaração de variáveis dentro do for, isto é, uma linha

for(int i = 0; i < n; i++)

deveria ser substituída por

int i;
for(i = 0; i < n; i++)

Para evitar este comportamento, você pode compilar com o padrão C99 utilizando a flag -std=c99, algo parecido com:

gcc -std=c99 programa.c -o programa

Provavelmente a versão do seu compilador é antiga e por isso utiliza o padrão ANSI C por default.

Você não pode na realidade declara uma variável dentro do for, pelo menos não sem dizer ao seu compilador utilizar um padrão de compilação diferente do default. Como se faz isso??? Simples: Ao compilar seu programa utilize uma flag: gcc meuProg.c -o meuprog -std=c99 O que equivale dizer para o seu compilador usar o padrão (standard) c99. Mais informações sobre o gcc você pode usar o manual do próprio Linux para aprender mais basta digitar no bash: man gcc (man é de manual e vc pode usar para qualquer comando do Linux ou mesmo alguns comandos da própria linguagem C !)

Como disse, eu até consigo compilar com o gcc pelo linux, mas no Windows não consigo chamar o Gcc pelo prompt, apenas tenho compilado no próprio Codeblocks, que veio junto com o GCC. Então, não tem nenhuma forma de mudar a configuração do codeblocks pra aceitar o c90?

Tem sim. Eu não mexo no Codeblocks faz um tempo, mas eu acho que fica em na aba Configurações > Compilador. Lá você consegue selecionar as flags de compilação.