Redeclaração de nomes de typedef
O typedef declaração pode ser usada para redeclare o mesmo nome para referir-se o mesmo tipo.Por exemplo:
// FILE1.H
typedef char CHAR;
// FILE2.H
typedef char CHAR;
// PROG.CPP
#include "file1.h"
#include "file2.h" // OK
O programa PROG.CPP inclui dois arquivos de cabeçalho, ambos contêm typedef declarações para o nome CHAR.As duas declarações de referir-se para o mesmo tipo, contanto que tais redeclaração é aceitável.
A typedef não é possível redefinir um nome que tenha sido declarado previamente como um tipo diferente.Portanto, se FILE2.H contém
// FILE2.H
typedef int CHAR; // Error
o compilador emitirá um erro devido a tentativa de redeclare o nome de CHAR para se referir a um tipo diferente.Isso se estende para construções, como:
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;