Scusa, ma se

struttura e' questa

typedef struct
{
FILE *file;
struttura stato; // stato è definito tramite un enum come APERTO o CHIUSO
int x;
} struttura;

come mai dichiari l'elemento stato come struttura? Se deve essere un enum, devi dichiararlo del tipo enum di cui parli ...