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;