PDA

View Full Version : [c]problema con un header


manu@2986
09-01-2008, 14:54
Devo realizzare una struttura dati che mi permetta di eseguire delle operazioni su numeri razionali. Devo creare un file .h che contiene la specifica, un file .c che contiene una implementazione della specifica e un file .c che mi permetta di eseguire i test. Tutto funziona, ma solo se dentro al file di test includo il file .c dell'implementazione, invece del file .h...il che è abbastanza un controsenso per me. Ho fatto altri programmi che hanno la stessa struttura, ma funzionano tranquillamente includendo il file .h.

Magari poi è una stupidaggine...:cry:

manu@2986
09-01-2008, 15:43
Sono un inetto, passavo i parametri sbagliati al compilatore.......:muro:

recoil
09-01-2008, 17:00
come atto di contrizione per la tua inettitudine sei obbligato a scrivere per 100 volte nel tuo editor preferito
printf("devo passare i parametri giusti al compilatore!\n");
e non fare copia/incolla! :mad:

già che ci sei di quali opzioni mettevi prima e dopo, così c'è la possibilità che tu sia di aiuto a qualcuno con un problema simile in futuro ;)

manu@2986
09-01-2008, 18:11
Mah, semplicemente non gli dicevo di prendere anche il file .c contenente l'implementazione....che idiota....

Comunque ora ho un altro problema, sempre con c, magari mi puoi essere di aiuto.

Ho la funzione enqueue di una coda che mi fa impazziere. Ecco il codice:
CodaImmutabile enqueue(CodaImmutabile s, void* e)
{
int i;
CodaImmutabile tmp=nuovaCoda((s->numElem)+1);
for(i=0;i<s->numElem;i++){
tmp->elements[i]=s->elements[i];
printf("%s",s->elements[i]);
}
tmp->elements[tmp->numElem-1]=e;
return tmp;
}


praticamente al primo inserimento funziona, al secondo, inserisce l'elemento che ho passato come paramentro ancora prima di aver effettuato l'operazione!
Se guardi dentro al ciclo for ho messo una printf per vedere cosa diavolo copia, e nonostante la mia incredulità, copia non il valore che dovrebbe esserci dentro ad elements[0], ma il valore che ho appena scritto nella console!

Es, primo inserimento "ciao", e nella coda c'è "ciao".
Al secondo inserimento scrivo "ciao2", e nel for copia in tmp->elements[0] "ciao2"....