Because you must be using C rather than C++; in C, the names of all structs, enums, and unions are in their own name space. It's common in C to introduce a type alias in the name space of ordinary identifiers with a typedef declaration: typedefstruct names names;