typedef 名稱的重新宣告
typedef 宣告可用來重新宣告參考相同類型的相同名稱。 例如:
// FILE1.H
typedef char CHAR;
// FILE2.H
typedef char CHAR;
// PROG.CPP
#include "file1.h"
#include "file2.h" // OK
程式 PROG.CPP 包含兩個標頭檔,兩個標頭檔都包含名稱 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;