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;