Problemas ao usar header file [RESOLVIDO]

1. Problemas ao usar header file [RESOLVIDO]

Ricardo Oliveira Pinheiro
ROP

(usa Ubuntu)

Enviado em 01/11/2017 - 11:51h

Estou fazendo um trabalho pra faculdade, estou tentando usar headers pra não colocar todas as funções no msm arquivo, porém quando compilo o arquivo principal o compilador diz que eu fiz uma referência indefinida as funções que deveriam ter sido importadas do header, segue os códigos:

fila.c:
#include <stdio.h>
#include <stdlib.h>
#include "fila.h"

typedef struct{
void* *vetor;
int tamanho;
int ocupacao;
} VDFila;

VDFila criarFila(){
VDFila fila;
fila.tamanho = 2;
fila.ocupacao = 0;
fila.vetor = malloc(sizeof(void*)*fila.tamanho);

return fila;
}

void enfileirar(VDFila *fila, void* elemento){
if (fila->tamanho == fila->ocupacao){
fila->tamanho = fila->tamanho*2;
fila->vetor = realloc(fila->vetor, sizeof(void*)*fila->tamanho);
}
fila->vetor[fila->ocupacao] = elemento;
fila->ocupacao++;
}

void desenfileirar(VDFila *fila){
for (int i = 0; i < (fila->ocupacao - 1); i++){
fila->vetor[i] = fila->vetor[i+1];
}
fila->ocupacao--;
}

void primeiroInt(VDFila *fila){
int *i;
i = fila->vetor[0];
printf("%d\n", *i);
}

void primeiroDouble(VDFila *fila){
double *i;
i = fila->vetor[0];
printf("%.3lf\n", *i);
}

void ultimoInt(VDFila *fila){
int *i;
i = fila->vetor[fila->ocupacao - 1];
printf("%d\n", *i);
}

void ultimoDouble(VDFila *fila){
double *i;
i = fila->vetor[fila->ocupacao - 1];
printf("%.3lf\n", *i);
}

void comprimento(VDFila *fila){
printf("%d\n", fila->ocupacao);
}

void vazia(VDFila *fila){
if(fila->ocupacao == 0){
printf("verdadeiro");
}else{
printf("falso");
}
}


fila.h:
typedef struct{
void* *vetor;
int tamanho;
int ocupacao;
} VDFila;

VDFila criarFila();

void enfileirar(VDFila *fila, void* elemento);

void desenfileirar(VDFila *fila);

void primeiroInt(VDFila *fila);

void primeiroDouble(VDFila *fila);

void ultimoInt(VDFila *fila);

void ultimoDouble(VDFila *fila);

void comprimento(VDFila *fila);

void vazia(VDFila *fila);


teste.c:
#include <stdio.h>
#include <stdlib.h>
#include "fila.h"

void main(){
int *x;
VDFila fila = criarFila();

x = malloc(sizeof(int));

scanf("%d", x);

enfileirar(&fila, x);

int *i;
i = fila.vetor[0];
printf("%d\n", *i);
}


Compilei pelo gcc com o seguinte comando: gcc teste.c -o teste


  


2. Re: Problemas ao usar header file

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/11/2017 - 14:18h

@ROP: headers não fazem inclusão de código, você tem que compilar os arquivos necessários em objects antes de compilar o binário final.
gcc -o fila.o -c fila.c
gcc -o teste teste.c fila.o



3. Re: Problemas ao usar header file [RESOLVIDO]

Ricardo Oliveira Pinheiro
ROP

(usa Ubuntu)

Enviado em 01/11/2017 - 18:29h

katsuke00 escreveu:

@ROP: headers não fazem inclusão de código, você tem que compilar os arquivos necessários em objects antes de compilar o binário final.
gcc -o fila.o -c fila.c
gcc -o teste teste.c fila.o


Vlw, como todos os arquivos estão em uma pasta só funcionou também com
 gcc *.c -o teste 








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts