1
resposta

estou tento problemas com ponteiro para struct no codeblock

#include<stdio.h>
#include<stdlib.h>
#include"mapa.h"
#include"fogefoge.h"

MAPA m;

int acabou(){

return 0;
}

void move(char direcao){

    int x, y;

    // acha a posicao do foge foge
    for(int i = 0; i < m.linhas; i++){
        for(int j = 0; j < m.colunas; j++){
            if(m.matriz[i][j] == '@'){
                x = i;
                y = j;

            }
        }
    }

    switch(direcao){
        case 'a':
            m.matriz[x][y-1] = '@';
            break;
        case 'w' :
            m.matriz[x-1][y] = '@';
            break;
        case 's':
            m.matriz[x+1][y] = '@';
            break;
        case 'd':
            m.matriz[x][y+1] = '@';
            break;
    }

    m.matriz[x][y] = '.';

}

int main(){

    lemapa(&m);

    do{

        imprimemapa(&m);

        char comando;
        scanf(" %c", &comando);
        move(comando);

    }while(!acabou());

    liberamapa(&m);
}

Quando eu tento compilar da uma mensagem de (undefined reference to 'imprimemapa'. undefined reference to 'liberamapa'. error: 1d returned exit status)

1 resposta

Olá, Willian! Tudo bem?

É provável que o erro seja porque, como esse é um programa com partes separadas, devemos compilar da seguinte maneira:

gcc mapa.c -o mapa.o
gcc FogeFoge.c -o FogeFoge.o
gcc mapa.o FogeFoge.o -o FogeFoge

Dessa forma conseguimos ter certeza que todas as partes que são necessárias para o programa final foram compiladas antes.

Você também pode juntá-los em um único executável. Podemos executar o seguinte comando para isso:

gcc fogefoge.c mapa.c -o fogefoge.out

Caso o problema não seja solucionado, estou à disposição.

Abraços!