Пространство имен имен 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