Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Erro de compilação

Estou tendo dificuldade em compilar o código porque aparece o seguinte erro : (https://prnt.sc/req210).

Meu código está exatamente ao do professor (https://gist.github.com/mauricioaniche/effe539d9ad12d2312e5) e os arquivos têm o mesmo nome.

10 respostas

Olá Vinicius.

Pelo erro acredito que o mapa não está sendo compilado, poderia verificar isso ?

Na opção Project na barra superior do CodeBlocks, vá na opção Properties. Na janela que foi aberta clique na aba Build targets, nessa aba verifique se todos os seus arquivos estão marcados (fogefoge.c, fogefoge.h, mapa.c, mapa.h), se eles estiverem todos marcados o CodeBlocks vai compilar eles normalmente.

Qualquer duvida não hesite em perguntar.

Bom estudos.

Olá Igor,

A opção "Properties" encontra-se indisponível para click.

Olá Vinicius. Se a opção Properties não está aparecendo é porque provavelmente não temos um projeto, então vamos cria-lo .

1 - No menu superior click na opção File, depois vá na opção New e então click na opção Project...

2 - Na janela que foi aberta, selecione a opção Console application e então click no botão Go

3 - Uma nova janela será aberta, nela click no botão Next , e então selecione a opção C e finalmente em Next.

4 - Nessa etapa você vai colocar um nome para seu projeto, eu optei por colocar fogefoge, no campo abaixo está mostrando onde seu projeto será criado, se quiser mudar click nos (...) e selecione outra pasta, eu recomendo que escolha a pasta onde estão os seus arquivos (fogefoge.c, fogefoge.h, maps.c, mapa.h e mapa.txt), no final click em Next e depois em Finish.

5 - Agora vamos no Windows Explorer para colocar os arquivos (fogefoge.c, fogefoge.h, maps.c, mapa.h e mapa.txt) dentro da pasta do projeto. Vá até onde estão seus arquivos e copie eles para dentro da pasta do projeto, se colocou o nome do projeto de fogefoge então a pasta terá esse nome também, dentro dessa pasta já existe um arquivo o main.c pode apaga-lo.

6 - Depois de colocar os arquivos dentro da pasta do projeto, vamos voltar ao CodeBlocks. No menu superior click na opção Project, depois click na opção Add Files.. e então selecione todos os seus arquivos (fogefoge.c, fogefoge.h, maps.c, mapa.h e mapa.txt) e click em Abrir.

7 - Na aba Projects que fica no menu a Esquerda, click no projeto fogefoge e depois na pasta Sources, lá você deve ver o arquivo main.c que apagamos, você deve selecionar ele e apertar o botão Delete do teclado.

Depois desses passos, click no botão de Build and Run, que é representado pela engrenagem e o Play, e seu código deve compilar e funcionar.

Sei que são muitos passos, então se tiver algum problema enquanto realiza eles ou se tiver alguma duvida, mande uma mensagem por aqui que eu vou te ajudar a resolver.

Bons estudos e fico no aguardo para saber se consegui te ajudar.

Segui todos os passos e criei o projeto, porém na hora de compilar deu o seguinte erro: https://prnt.sc/rj2n6q

Segui todos os passos e criei o projeto, porém na hora de compilar deu o seguinte erro: https://prnt.sc/rj2n6q

Olá Vinicius.

Poderia tirar um print ou verificar novamente seguindo essa etapas abaixo se os builds targets do projeto estão compilando o arquivo mapa.c, porque pelo erro ele não está enxergando o mapa.c.

"Na opção Project na barra superior do CodeBlocks, vá na opção Properties. Na janela que foi aberta clique na aba Build targets, nessa aba verifique se todos os seus arquivos estão marcados (fogefoge.c, fogefoge.h, mapa.c, mapa.h), se eles estiverem todos marcados o CodeBlocks vai compilar eles normalmente." Print

Porem se não der certo poderia me disponibilizar todos os 5 arquivos (fogefoge.c, fogefoge.h, mapa.c, mapa.h e mapa) porque ai consigo simular melhor na minha maquina.

Bom estudos.

Todos os arquivos estão marcados na aba Build Targetes: Print

Arquivos: https://drive.google.com/open?id=1_hsyP-vzv3WvmW1GWAPyXDRZ5ASlvvXz

solução!

Olá Vinícius.

No arquivo do mapa.c, na função alocamapa está faltando fechar uma chave } no final, para fechar o escopo da função.

void alocamapa(MAPA* m) {
    m->matriz = malloc(sizeof(char*) * m->linhas);

    for(int i = 0; i < m->linhas; i++) {
        m->matriz[i] = malloc(sizeof(char) * m->colunas + 1);
    }

Já no final do arquivo tem uma chave a mais e por isso o código estava conseguindo compilar.

void imprimemapa(MAPA* m) {
    for(int i = 0; i < m->linhas; i++) {
        printf("%s\n", m->matriz[i]);
    }
}
}

Então para corrigir inclua o fechando de uma chave na função alocamapa e apague a que tem depois da função imprimemapa.

Agora vamos conseguir \o.

Mas se não der certo pode ficar tranquilo e avisar qual o erro.

Bons estudos.

P.S.

Seria legal incluir a assinatura da função encontramapa no arquivo header mapa.h, já que é a unica função que não está lá

void lemapa(MAPA* m);
void alocamapa(MAPA* m);
void liberamapa(MAPA* m);
void imprimemapa(MAPA* m);
void encontramapa(MAPA* m, POSICAO* p, char c);

É só um detalhe que não afeta o funcionamento do seu programa.

Muito obrigado pela atenção Igor, finalmente deu certo. Não tinha reparado no meu erro.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software