Obor názvů typedef
Názvy deklarované pomocí direktivy typedef jsou umístěny ve stejném oboru názvů jako jiné identifikátory (kromě popisů příkazů).Proto nemohou používat identifikátor shodný s dříve deklarovaným názvem kromě deklarací typů tříd.Příklad:
// typedef_names1.cpp
// C2377 expected
typedef unsigned long UL; // Declare a typedef name, UL.
int UL; // C2377: redefined.
Pravidla skrývání názvů platná pro jiné identifikátory řídí viditelnost i názvů deklarovaných pomocí direktivy typedef.Následující příklad je proto v jazyce C++ platný:
// 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