[Ayuda] Error Multiple definition of en C

Iniciado por NikNitro!, 5 Septiembre 2014, 22:08 PM

0 Miembros y 1 Visitante están viendo este tema.

NikNitro!

Buenas gente. Estoy haciendo ejercicios y hay un error al cual no le encuentro sentido... El error dice tal que así:

Citar
Description                                                Resource   Path                   Location   Type
first defined here                                        LinkedList.c   /Examenes/src   line 14   C/C++ Problem
first defined here                                        LinkedList.c   /Examenes/src   line 18   C/C++ Problem
first defined here                                        LinkedList.c   /Examenes/src   line 41   C/C++ Problem
multiple definition of `AnadirProceso'        LinkedList.c   /Examenes/src   line 18   C/C++ Problem
multiple definition of `Crear'                        LinkedList.c   /Examenes/src   line 14   C/C++ Problem
multiple definition of `MostrarLista'                LinkedList.c   /Examenes/src   line 41   C/C++ Problem


En un principio el fallo está claro. Pero por más que miro no veo ninguna redefinición. El código es de una Linked List Circular Os dejo aquí el header:


#ifndef LINKEDLIST_H_
#define LINKEDLIST_H_

typedef struct Linked_List* LProc;

struct Linked_List {
unsigned valor;
LProc sig;
LProc ejecucion;

};
//Crea una lista de procesos vacía.
void Crear (LProc *lista);

//Añade el proceso con identificador idproc a la lista de procesos disponibles para ejecución.
//Este proceso se añade como nodo anterior al nodo al que apunta ejecución.
void AnadirProceso (LProc *lista, int idproc);

//Muestra la lista de los procesos que están disponibles para la ejecución.
void MostrarLista( LProc lista);

//Simula la ejecución del proceso apuntado por ejecución, eliminándolo de la lista de procesos.
void EjecutarProceso(LProc *lista);


#endif /* LINKEDLIST_H_*/


Aquí el .c

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


void Crear (LProc *lista) {
lista = NULL;
}

void AnadirProceso (LProc *lista, int idproc) {
LProc* aux = lista;

if(aux == NULL){

LProc nuevo = (LProc)malloc(sizeof(struct Linked_List));
nuevo->valor = idproc;
nuevo->sig   = nuevo;
nuevo->ejecucion = nuevo;
} else {

LProc nuevo = (LProc)malloc(sizeof(struct Linked_List));
nuevo->valor = idproc;
nuevo->sig   = (*lista)->ejecucion;
nuevo->ejecucion = (*lista)->ejecucion;

while((*aux)->sig != *lista)
(*aux) = (*aux)->sig; //Hacemos de aux el anterior a lista

(*aux)->sig = nuevo;
}
}

void MostrarLista( LProc lista) {
LProc aux = lista;
while(aux->sig!=lista) {
printf("%d ", aux->valor);
}
fflush(stdout);
}


Y aquí el main:

#include <stdio.h>
#include <stdlib.h>
#include "LinkedList.c"



int main () {

LProc list;

Crear(&list);
MostrarLista(list);

AnadirProceso(&list, 3);
AnadirProceso(&list, 8);
AnadirProceso(&list, 1);
AnadirProceso(&list, 14);
AnadirProceso(&list, 0);

printf("Despues de introducir: 3, 8, 1, 14, 0 la lista es es \n");

MostrarLista(list);
fflush(stdout);
system("PAUSE");
       return 0;
}


Espero que podais ayudarme. Uso Eclipse Luna con CDT y Mingw.

Muchas gracias ;)

Eternal Idol

¿Es intencional esto?

#include "LinkedList.c"
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

NikNitro!

Es como se llama mi. C para asi poder hacer uso de esa estructura en el main... Algo mal? :s

Eternal Idol

Tenes que incluir la cabecera, el archivo .H, no el de codigo .C (por eso te dice que estas definiendo esas funciones 2 veces, una al compilar LinkedList.c y otra al compilar el main por incluir LinkedList.c).
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón


Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón