Quindi questo:
codice:
typedef struct struttura_pippo {
.
.
} PIPPO;
è diverso da questo:
codice:
typedef struct struttura_pippo;
struttura_pippo  PIPPO{
.
.
};
???

Se così fosse, il significato sarebbe:
Definisci PIPPO come struttura di tipo struct struttura_pippo {. . .}.

Ma allora non era più logico scrivere direttamente:
codice:
struct PIPPO {
.
.
};
Senza bisogno di typedef e struttura_pippo???