0
I made a code that reads a file and creates a map based on the coordinates of that file, but all the functions of the code have the error "Undefined Reference to " Compiler shows following errors:
main.c|23|undefined reference to `Preenche_Boia'|
main.c|28|undefined reference to `Preenche_aviao'|
main.c|32|undefined reference to `Preenche_Submarino'|
main.c|36|undefined reference to `Preenche_espiao1'|
main.c|40|undefined reference to `Preenche_espiao2'|
main.c|44|undefined reference to `Preenche_porta_aviao'|
main.c|48|undefined reference to `Imprime_Matriz'|
That is, ALL functions. Follows the code:
Battle. h
#ifndef BATALHA_H_INCLUDED
#define BATALHA_H_INCLUDED
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
#include<string.h>
#define MAX 20
void Inicia_matriz(char mapa[][MAX]);
void Preenche_Boia(char mapa[][MAX], int linha, int coluna);
void Imprime_Matriz(char mapa [][MAX]);
void Preenche_Submarino(char mapa[][MAX], int id, int hor, int linha, int coluna);
void Preenche_aviao(char mapa[][MAX],int id,int hor,int linha,int coluna);
void Aviao_leste(char mapa[][MAX],int id,int linha, int coluna);
void Aviao_sul(char mapa[][MAX],int id,int linha, int coluna);
void Aviao_oeste(char mapa[][MAX],int id,int linha, int coluna);
void Aviao_norte(char mapa[][MAX],int id,int linha, int coluna);
void Preenche_espiao1(char mapa[][MAX],int id,int hor,int linha, int coluna);
void espiao1_leste(char mapa[][MAX],int id,int linha, int coluna);
void espiao1_sul(char mapa[][MAX],int id,int linha, int coluna);
void espiao1_oeste(char mapa[][MAX],int id,int linha, int coluna);
void espiao1_norte(char mapa[][MAX],int id,int linha, int coluna);
void Preenche_espiao2(char mapa[][MAX],int id, int hor, int linha, int coluna);
void espiao2_leste(char mapa[][MAX],int id,int linha, int coluna);
void espiao2_sul(char mapa[][MAX],int id,int linha, int coluna);
void espiao2_oeste(char mapa[][MAX],int id,int linha, int coluna);
void espiao2_norte(char mapa[][MAX],int id,int linha, int coluna);
void Preenche_porta_aviao(char mapa[][MAX],int id,int hor,int linha, int coluna);
void Conta_func(char mapa[][MAX]);
#endif // BATALHA_H_INCLUDED
Battle. c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include"batalha.h"
#define MAX 20
void Inicia_matriz(char mapa[][MAX])
{
int i,j;
for(i=0; i<MAX; i++)
{
for(j=0; j<MAX; j++)
{
mapa[i][j]=42;
}
}
}
void Preenche_Boia(char mapa [][MAX], int linha, int coluna)
{
mapa[linha][coluna]=48;
}
void Imprime_Matriz(char mapa[][MAX])
{
int i, j;
char ch;
for(i=0; i<MAX; i++)
{
for(j=0; j<MAX; j++)
{
printf("%c", mapa[i][j]);
}
printf("\n");
}
}
void Preenche_Submarino(char mapa [][MAX], int id, int hor, int linha, int coluna)
{
int i,j;
if(hor==3||hor==4)
{
for(i=coluna; i<(coluna+4); i++)
{
mapa[linha][i]=id;
}
}
else if (hor==0||hor==1)
{
for(i=linha; i<(linha+4); i++)
{
mapa[i][coluna]=id;
}
}
}
void Preenche_porta_aviao(char mapa[][MAX], int id, int hor, int linha, int coluna)
{
int i, j;
if(hor==3||hor==4)
{
for(i=linha; i<(linha+2); i++)
{
for(j=coluna; j<(coluna+5); j++)
{
mapa[i][j]=5;
}
}
}
else if(hor==0||hor==1)
{
for(i=linha; i<(linha+5); i++)
{
for(j=coluna; j<(coluna+2); j++)
{
mapa[i][j]=5;
}
}
}
}
void Preenche_aviao(char mapa[][MAX],int id, int hor, int linha, int coluna)
{
if(hor==0)
{
Aviao_norte(mapa,id,linha,coluna);
}
else if(hor==1)
{
Aviao_sul(mapa,id,linha,coluna);
}
else if(hor==2)
{
Aviao_oeste(mapa,id,linha,coluna);
}
else if(hor==3)
{
Aviao_leste(mapa,id,linha,coluna);
}
}
void Aviao_oeste(char mapa[][MAX], int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
}
else if (i==linha+2)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
}
}
}
void Aviao_norte(char mapa[][MAX], int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+2); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=mapa[i][coluna+2];
}
}
}
void Aviao_leste(char mapa[][MAX],int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
}
else if (i==linha+2)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
}
}
}
void Aviao_sul(char mapa[][MAX], int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+2); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=mapa[i][coluna];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
}
}
}
void Preenche_espiao1(char mapa[][MAX], int id, int hor, int linha , int coluna)
{
if(hor==0)
{
espiao1_norte(mapa,id,linha,coluna);
}
else if(pos==1)
{
espiao1_sul(mapa, id , linha , coluna);
}
else if(pos==2)
{
espiao1_oeste(mapa, id, linha , coluna);
}
else if(pos==3)
{
espiao1_leste(mapa, id , linha , coluna);
}
}
void espiao1_leste(char mapa[][MAX], int id , int linha, int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
}
}
void espiao1_oeste(char mapa[][MAX], int id, int linha, int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
}
}
void espiao1_sul(char mapa[][MAX], int id, int linha, int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
}
}
void espiao1_norte(char mapa[][MAX], int id , int linha , int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
}
}
void Preenche_espiao2(char mapa[][MAX], int id, int hor, int linha, int coluna)
{
if(hor==0)
{
espiao2_norte(mapa,id,linha,coluna);
}
else if(hor==1)
{
espiao2_sul(mapa,id,linha,coluna);
}
else if(hor==2)
{
espiao2_oeste(mapa,id,linha,coluna);
}
else if(hor==3)
{
espiao2_norte(mapa,id,linha,coluna);
}
}
}
void espiao2_leste(char mapa[][MAX],int id,int linha,int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
}
}
void espiao2_oeste(char mapa[][MAX],int id,int linha,int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
}
}
void espiao2_sul(char mapa[][MAX],int id, int linha, int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
}
}
void espiao2_norte(char mapa[][MAX], int id , int linha, int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
}
}
main. c
#include <stdio.h>
#include <stdlib.h>
#include"batalha.h"
#define MAX 20
int main()
{
char mapa [MAX][MAX];
int quantidade, id, hor, linha, coluna;
FILE*arq;
char url[]="tabuleiro1.txt";
arq=fopen(url,"r");
if(arq==NULL)
{
printf("ERRO");
}
else
{
while(fscanf(arq,"%d %d %d %d %d",&quantidade,&id,&hor,&linha,&coluna)!=EOF)
{
if(id==48)
{
Preenche_Boia(mapa,linha,coluna);
}
else if(id==49)
{
Preenche_aviao(mapa,id,hor,linha,coluna);
}
else if(id==50)
{
Preenche_Submarino(mapa,id,hor,linha,coluna);
}
else if(id==51)
{
Preenche_espiao1(mapa,id,hor,linha,coluna);
}
else if(id==52)
{
Preenche_espiao2(mapa,id,hor,linha,coluna);
}
else if (id==53)
{
Preenche_porta_aviao(mapa,id,hor,linha,coluna);
}
}
}
Imprime_Matriz(mapa);
printf("Hello world!\n");
return 0;
}
These are not the errors shown in the build. In your case the way you are compiling is certainly not including . h is what I suspect. Are you compiling manually ? If yes, how ? If not which IDE you are using and how are you compiling ?
– Isac
I am not compiling manually. I am using the Codeblocks IDE.
– Chaospare
Then you need to confirm that when you added
Batalha.h
and theBatalha.c
did so with the option of Debug active, otherwise they are not used in compiling in mode Debug. This is a common problem until.– Isac
I activated the Debug option and it worked ! Thank you very much.
– Chaospare