Nueva declaración de nombres typedef
La declaración typedef se puede utilizar para volver a declarar el mismo nombre para hacer referencia al mismo tipo. Por ejemplo:
// FILE1.H
typedef char CHAR;
// FILE2.H
typedef char CHAR;
// PROG.CPP
#include "file1.h"
#include "file2.h" // OK
El programa PROG.CPP incluye dos archivos de encabezado, que contienen las declaraciones typedef para el nombre CHAR. Mientras las declaraciones hagan referencia al mismo tipo, se puede volver a declarar el nombre.
typedef no puede volver a definir un nombre que se declaró previamente como un tipo diferente. Por tanto, si FILE2.H contiene
// FILE2.H
typedef int CHAR; // Error
el compilador genera un error debido al intento de volver a declarar el nombre CHAR para hacer referencia a un tipo diferente. Esto se aplica también a las construcciones 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;