typedef 名の再宣言
typedef 宣言を使用すると、同じ名前を再宣言して同じ型を参照することができます。 次に例を示します。
// FILE1.H
typedef char CHAR;
// FILE2.H
typedef char CHAR;
// PROG.CPP
#include "file1.h"
#include "file2.h" // OK
プログラム PROG.CPP は 2 つのヘッダー ファイルを含み、両方のヘッダー ファイルに名前 CHAR の typedef 宣言が含まれています。 両方の宣言が同じ型を参照する限り、このような再宣言は許容されます。
以前に異なる型として宣言された名前を 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;