Vi mostro la definizione nel caso non la sapete:
"Dati due tipi T ed S, si dice che T è compatibile con S se :
-T ed S sono equivalenti, oppure se:
-I valori di T sono un sottoinsieme dei valori di S;"

Quindi ad esempio il tipo int in C è compatibile col tipo float perchè i naturali sono un sottoinsieme dei reali.
Però non ho capito una cosa, se io ho questi due tipi:
codice:
typedef struct
{
    int a;
}t1;

typedef struct
{
    int a;
    float r;
}t2;
t1 è compatibile con t2 ?