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