Redeclaration имен typedef
typedef объявление можно использовать для redeclare одинаковое имя, которое должно относиться к одному типу.Примеры.
// FILE1.H
typedef char CHAR;
// FILE2.H
typedef char CHAR;
// PROG.CPP
#include "file1.h"
#include "file2.h" // OK
Программа PROG.CPP включает 2 файла заголовка, оба из которых содержат typedef объявления для имени CHAR.Если оба объявления относятся к одному и тому же типу, то redeclaration приемлемо.
A typedef не удалось переопределить имя, которое предварительно было объявлено как другой тип.Поэтому, если FILE2.H содержащий
// FILE2.H
typedef int CHAR; // Error
компилятор выдает ошибку из-за попытки redeclare имя CHAR ссылаться на иной тип.Это распространяется на конструкциям how to:
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;