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