Allora sto provando a tirare giù qualcosa di banale, anche solo per creare una coda normale. Per ora ho creato questi file:
item.h
codice:
#include <stdio.h>
typedef char item;
random_queue.h
codice:
#include "item.h"
struct random_queue;
typedef struct random_queue *queue_random_queue;
queue_random_queue random_queue_make();
int random_queue_is_empty(queue_random_queue);
item random_queue_remove(queue_random_queue);
void random_queue_insert(queue_random_queue,item);
void random_queue_print(queue_random_queue);
random_queue.c
codice:
#include "random_queue.h"
#include <assert.h>
#include <stdio.h>
struct _node{
item c;
struct _node * next;
};
typedef struct _node * node;
struct random_queue{
node first;
node last;
};
queue_random_queue random_queue_make(){
queue_random_queue new_queue = (queue_random_queue) malloc(sizeof(struct random_queue));
assert(new_queue);
new_queue->first = new_queue->last=(node) NULL;
return new_queue;
}
int random_queue_is_empty(queue_random_queue q){
assert(q);
if(q->first == (node) NULL)
return 1;
else
return 0;
}
void random_queue_insert(queue_random_queue q, item i){
assert(q);
{
node new_node = (node) malloc(sizeof(struct _node));
assert(new_node);
new_node->c=i;
if(random_queue_is_empty(q)==1){
q->first=new_node;
q->last=new_node;
} else {
q->last->next=new_node;
q->last=new_node;
}
}
}
void random_queue_print(queue_random_queue q){
node i=q->first;
while(i->next != (node) NULL){
printf("\n%c",i->c);
i=i->next;
}
}
item random_queue_remove(queue_random_queue q){}
testrq.c
codice:
#include "random_queue.h"
#include <stdio.h>
main(){
queue_random_queue q;
q=random_queue_make();
return 0;
}
Ora il problema è che quando compilo con
$ gcc -o trq testrq.c
mi viene restituito il seguente errore: "undefined reference to 'random_queue_make'"
Vista la mia incapacità di fondo mi è anche venuto il dubbio che possa mancare qualche parametro da passare al compilatore, ma chiedo a voi se sbaglio qualcosa.
Grazie