Ecco ... perche'

'stampa_nome' : redefinition; different basic types

?

Come ti dicevo, devi sapere che, se non metti il void, il compilatore intende che ci sia un int e quindi si trova definite due funzioni, una tramite il prototipo

void stampa_nome();

e un'altra nel corpo del programma, come se fosse

int stampa_nome()

e quindi ti chiede come mai hai "ridefinito" la funzione stampa_nome che, a guardare il prototipo, non restituiva nulla, ma che appena e' stata trovata nel sorgente, restituisce un int ...

E ti consiglia anche

see declaration of 'stampa_nome'

!!

Questo per farti notare che non solo e' importante avere le conoscenze per programmare ma, e' importantissimo (forse piu' importante) avere le conoscenze per effettuare il debugging delle applicazioni ...