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 ;)
¿Es intencional esto?
#include "LinkedList.c"
Es como se llama mi. C para asi poder hacer uso de esa estructura en el main... Algo mal? :s
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).
Ok gracias. Ahora al menos compila.. xD
Nos vemos;)
De nada.