Ir ao conteúdo
  • Cadastre-se

Erro: referência indevida


Posts recomendados

Bom, estou com um erro que não consigo identificar a causa dele. Se alguém poder me ajudar eu agradeço.

Eis o código.

#include <stdio.h>
#include <stdlib.h>
#include "lista_ligadah.h"

int main(){
    Lista *lista;
    int valor, i, numero_de_celulas;

    lista= criar_lista_vazia;

    scanf("%d%d", &valor, &numero_de_celulas);

    for(i=0;  i<numero_de_celulas;  i++){
        inserir_valor(&lista, valor);      //o erro está nesta linha.
        valor= valor+2;                        //está linha é simplesmente para que a lista não tenha todos os termos de mesmo valor.
    }
    return 0;
}

Agora o arquivo lista_ligadah.c (eles estão em arquivos diferentes, lista_ligadah é a biblioteca que criei)

#include <stdio.h>
#include <stdlib.h>
#include "lista_ligadah.h"

void inserir_valor(Lista **inicio, int valor){
    Lista *celula = malloc( sizeof ( Lista ));
    celula->conteudo=  valor;
    celula->prox=  *inicio;
    *inicio=  celula;
}

Lista é o tipo de dado que criei.

typedef struct lista{
    int conteudo;
    struct lista *prox;
} Lista;

 

o arquivo .h está correto, então achei melhor não coloca-lo, juntamente com a função criar_lista_vazia para não sobrecarregar a leitura.

 

o algoritmo cria uma lista ligada com a função criar_lista_vazia, e  depois preenche com  n termos (numero_de_celulas),

uso o codeblocks 13.12 no ubuntu 16.04.

 

este é o erro: main.c|14|referência indefinida para `inserir_valor'|

 

 

 

Link para o comentário
Compartilhar em outros sites

No meu entendimento os argumentos e os parâmetros estão compatíveis.

Meio enrolado, mas o que posso dizer é que o código, primeiro código que contem a função main

está fazendo referencia (chamando) uma função que não possui definição (não existe).

Observe o código abaixo que reflete aproximadamente o problema em questão:

/* PARA fórum Clube do Hardware */
/*@authr Mauro Britivaldo */
#include <stdio.h>


//Prototipos de Função
int num(int** ptrint);

/** Função principal que abre o programa */
int main(void)
{
    int *iptr;
    int **prt;          //Ponteiro para outro ponteiro
    int *vect[10];      //Vetor com 10 ponteiros mesmo que **prt 10x
    int Array[10][10];  //Vetor com 10 ponterios com 10 int cada

        prt = vect;
        vect[0] = Array[0];

        num(&iptr);     //referência(chamou) mais não Defininda (Sem corpo)
        num(prt);       //Mesmo #erro
        return 0;
}

A função main não enxerga definição (corpo) da função num, que se encontra indefinida para num,

mesmo problema que você tem aí beleza a função inserir_valor não tem corpo!

Eu acho que o conflito é com a estrutura do projeto os arquivos .h .c .o não estão ligados corretamente, tente iniciar um novo projeto para que assim corrija o erro.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!