Ridichiarazione di nomi typedef
La dichiarazione typedef può essere utilizzata per ridichiarare lo stesso nome per fare riferimento allo stesso tipo. Ad esempio:
// FILE1.H
typedef char CHAR;
// FILE2.H
typedef char CHAR;
// PROG.CPP
#include "file1.h"
#include "file2.h" // OK
Il programma PROG.CPP include due file di intestazione, contenenti entrambe le dichiarazioni typedef per il nome CHAR. Se entrambe le dichiarazioni si riferiscono allo stesso tipo, tale ridichiarazione è accettabile.
typedef non può ridefinire un nome in precedenza dichiarato come un tipo differente. Pertanto, se FILE2.H contiene
// FILE2.H
typedef int CHAR; // Error
il compilatore genera un errore a causa dei tentativi di ridichiarare il nome CHAR per fare riferimento a un tipo diverso. Questo consente di estendere i costrutti come:
typedef char CHAR;
typedef CHAR CHAR; // OK: redeclared as same type
typedef union REGS // OK: name REGS redeclared
{ // by typedef name with the
struct wordregs x; // same meaning.
struct byteregs h;
} REGS;