Sto passando i dati di tipo struct Person a una lista collegata, quindi il puntatore di dati di ogni nodo punta a una struct Person.Trasmissione da void * a struct
struct Person {
char name[16];
char text[24];
};
sto cercando di attraversare la lista e stampare il nome/testo in ogni nodo chiamando
traverse(&list, &print);
Prototipo per traslazione è:
void traverseList(struct List *list, void (*f)(void *));
lista è definita come:
struct List {
struct Node *head;
};
My p la funzione rint accetta dati void *:
print(void *data) { .... }
So che devo trasmettere i dati a struct Persona, corretto?
struct Person *person = (struct Person *)data;
printf("%s", person->name);
So che questo non è sufficiente poiché sto ricevendo un avviso di "inizializzazione dal tipo di puntatore incompatibile". Come posso lanciare un void * in questo caso? Grazie.
Qual è il prototipo di 'traverse'? E quale tipo è 'list'? –
Si consiglia di verificare come si passa l'elenco per attraversare e come si sta effettivamente utilizzando la stampa. Tutto ciò che hai mostrato sembra corrispondere. – unxnut
@ValeriAtamaniouk Ho modificato la mia domanda per includerli. – user1889966