il codice e' questo; e l'errore e' questo sul compilatore in linux ---
bash-4.3$ gcc ciao.c
ciao.c:101:1: warning: return type defaults to 'int' [-Wimplicit-int]
stampadati(lista list){
^
ciao.c:101:1: warning: conflicting types for 'stampadati'
ciao.c:21:6: note: previous declaration of 'stampadati' was here
void stampadati(lista list);
^
problema che non ho se compilo con codeblock in windows.
Come vedi il compilatore ti segnala correttamente l'errore:
a) ti dice che hai scritto una funzione senza specificare il valore di ritorno e che lui in questo caso considera sia int
ciao.c:101:1: warning: return type defaults to 'int' [-Wimplicit-int]
b) ti segnala che c'è un conflitto nel valore di ritorno di stampadati(), alla riga 101
ciao.c:101:1: warning: conflicting types for 'stampadati'
c) ti indica dove c'è la precedente dichiarazione con cui si genera il conflitto, alla riga 21
ciao.c:21:6: note: previous declaration of 'stampadati' was here
void stampadati(lista list);
Il fatto che con codeblocks (il compilatore forse è mingw) non ti dia problemi non vuol dire che con un altro compilatore non ti possa segnalare dei warning o anche degli errori.
Infine un'ultima nota: per passare una struttura ad una funzione di norma si passa attraverso un puntatore alla struttura, anche se poi i dati non verranno modificati (come nel tuo caso); in questo modo limiti l'utilizzo dello stack perchè nella chiamata alla funzione non viene copiata tutta la struttura sullo stack ma solo il puntatore.
Quindi prova a riscrivere la funzione stampadati() con questo prototipo:
void stampadati(lista *list);
Buon lavoro e buono studio