Ponowna deklaracja nazw elementu typedef
Deklaracja typedef może być używana do ponownej deklaracji tej samej nazwy, aby odwoływała się do tego samego typu.Na przykład:
// FILE1.H
typedef char CHAR;
// FILE2.H
typedef char CHAR;
// PROG.CPP
#include "file1.h"
#include "file2.h" // OK
W programie PROG.CPP dołączono dwa pliki nagłówkowe, oba zawierające deklarację typedef dla nazwy CHAR.Ponowna deklaracja jest w tym przypadku dopuszczalna, dopóki obie deklaracje odwołują się do tego samego typu.
Deklaracja typedef nie może ponownie definiować nazwy, która została wcześniej zadeklarowana jako inny typ.Z tego powodu, jeśli plik FILE2.H zawiera
// FILE2.H
typedef int CHAR; // Error
kompilator wygeneruje błąd spowodowany próbą ponownej deklaracji nazwy CHAR, która odwołuje się do innego typu.Rozszerza się to do konstrukcji takich jak:
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;