
Problema: Compilar cabecera.h para listas
Publicado por Diego (150 intervenciones) el 29/06/2016 17:41:38
Buenas tardes, trato de compilar esta pequeña libreria para una lista y me sale el siguiente error:
ejecuto en consola: gcc -Wall -o prueba.c lista.c
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: En la función `_start':
(.text+0x20): referencia a `main' sin definir
collect2: error: ld returned 1 exit status
Seguidamente el archivo prueba.c Desaparece de la carpeta.
Prueba,c
lista.h
lista.c
Me pidieron que evitara incluir multiples veces las mismas librerias. Por ese motivo implemente el uso de #ifndef; AUnque no sè si lo apliquè correctamente.
ejecuto en consola: gcc -Wall -o prueba.c lista.c
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: En la función `_start':
(.text+0x20): referencia a `main' sin definir
collect2: error: ld returned 1 exit status
Seguidamente el archivo prueba.c Desaparece de la carpeta.
Prueba,c
1
2
3
4
5
6
7
8
9
10
#include "lista.h"
int main(int argc, char *argv[]){
Lista miLista;
char nombre[23] = "Diego":
long dni = 36717113;
crear_lista(&miLista);
insertar(&miLista, nombre, dni);
mostrar_lista(&miLista);
return 0;
}
lista.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef LISTA_H
#define LISTA_H
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct nodo{
char nombre[23];
long dni;
struct nodo *siguiente;
};
typedef struct nodo * Lista;
void crear_lista(Lista *);
void insertar(Lista *, char *, long);
void mostrar_lista(Lista *);
#endif
lista.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "lista.h"
void crear_lista(Lista *miLista)
{
*miLista = NULL;
}
void insertar(Lista *miLista, char *nombre, long dni)
{
Lista aux;
aux = (Lista) malloc(sizeof(struct nodo));
if (aux != NULL){
strcpy(aux->nombre, nombre);
aux->dni = dni;
aux->siguiente = *miLista;
*miLista = aux;
}
}
void mostrar_lista(Lista *miLista)
{
Lista aux;
aux = *miLista;
while (aux != NULL){
printf("datos\n");
printf("-----\n");
printf("nombre: %s ", aux->nombre);
printf("dni: %lu\n", aux->dni);
aux = aux->siguiente;
}
}
Me pidieron que evitara incluir multiples veces las mismas librerias. Por ese motivo implemente el uso de #ifndef; AUnque no sè si lo apliquè correctamente.
Valora esta pregunta


0