Typedef 이름의 네임스페이스
typedef를 사용하여 선언된 이름은 다른 식별자(문 레이블 제외)와 동일한 네임스페이스를 차지합니다. 따라서 클래스 형식으로 선언된 경우를 제외하고 이전에 선언된 이름과 동일한 식별자를 사용할 수 없습니다. 다음 예제를 참조하십시오.
// typedef_names1.cpp
// C2377 expected
typedef unsigned long UL; // Declare a typedef name, UL.
int UL; // C2377: redefined.
또한 다른 식별자에 있는 이름 숨기기 규칙은 typedef를 사용하여 선언된 이름의 가시성을 통제합니다. 따라서 다음 예제는 C++에서 사용할 수 있습니다.
// typedef_names2.cpp
typedef unsigned long UL; // Declare a typedef name, UL
int main()
{
unsigned int UL; // Redeclaration hides typedef name
}
// typedef UL back in scope