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

[Dúvida] Recebo o erro conflicting types for 'acabou'.

Pfvr alguém pode me ajudar com esse erro? Segue o meu código:


```#include <stdio.h>
#include <stdlib.h>
#include "pacman.h" 

char** mapa;
int linhas;
int colunas;

void liberamapa(){
    for (int i = 0; i < linhas; i++){
        free(mapa[i]);
    }
    free(mapa);
}

void alocamapa(){
    mapa = malloc(sizeof(char*) * linhas);
    for (int i = 0; i < linhas; i++){
        mapa[i] = malloc(sizeof(char) * (colunas + 1));
    }
}

void lemapa(){
    FILE *f;
    f = fopen("mapa.txt", "r");
    if (f == 0){
        printf("Erro na leitura do mapa\n");
        exit(1);
    }
    
    fscanf(f, "%d %d", &linhas, &colunas);
    alocamapa();

    for (int i = 0; i < 5; i++){
        fscanf(f, "%s", mapa[i]);
    }
    
    fclose(f);
}

void imprimemapa(){
    for (int i = 0; i < 5; i++){
        printf("%s\n", mapa[i]);
    }
}

int acabou(){
    return 0;
}

void move(char direcao){
    int x;
    int y;
    //acha a posição do PacMan
    for(int i = 0; i < linhas; i++){
        for(int j =0; j < colunas; j++){
            if(mapa[i][j] == '@'){
                x = i;
                y = j;
                break;
            }
        }
    }
    
    switch(direcao){
        case 'a':
            mapa[x][y-1] = '@';
            break;
        case 'w':
            mapa[x-1][y] = '@';
            break;
        case 's':
            mapa[x+1][y] = '@';
            break;
        case 'd':
            mapa[x][y+1] = '@';
            break;
    }
    //2 PacMan no mapa, é necessário remover 1
    mapa[x][y] = '.';
}

int main(){
    lemapa();
    
    do{
        imprimemapa();
        
        char comando;
        scanf(" %c", &comando);
        move(comando);
        
    }while(!acabou());
    
    liberamapa();

}
2 respostas
solução!

Olá, Thiago! Tudo bem?

Como está o arquivo pacman.h? Pelo erro, parece que a função no arquivo .h retorna um tipo, e no arquivo que .c retorna um tipo diferente, por isso o problema de tipos conflitantes.

Tenta comparar os dois retornos da função acabou() e, caso tenha problemas, manda o arquivo aqui, para que eu possa te ajudar!

Espero ter contribuído! Abraços e bons estudos :)

Meu Deus, no arquivo pacman.h estava "void acabou(); e deveria ser int acabou();, foi só você dizer que eu reparei nisso. Muito obrigado pela ajuda

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