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;

请参见

参考

typedef 说明符