Повторное объявление имен typedef

Объявление typedef можно использовать для повторного объявления того же имени с указанием того же типа. Например:

// FILE1.H
typedef char CHAR;

// FILE2.H
typedef char CHAR;

// PROG.CPP
#include "file1.h"
#include "file2.h"   // OK

Программа PROG.CPP содержит два файла заголовков, в каждом из которых имеются объявления typedef имени CHAR. Если в обеих объявлениях указывается один и тот же тип, такое повторное объявление допустимо.

typedef не может переопределить имя, которое было объявлено как имя другого типа. Поэтому, если файл FILE2.H содержит

// FILE2.H
typedef int CHAR;     // Error

компилятор выдает ошибку из-за попытки повторного объявления имени CHAR как имени другого типа. Это правило распространяется также на конструкции, подобные следующим:

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;

См. также

Ссылки

Спецификатор typedef