This goes back a long way, all the way to the first C versions. They didn't have a seperate symbol table for structure members, the names were added to the global symbol table. With the obvious nasty global namespace pollution that causes. The workaround was the same one you use on enums today, prefix them with a couple of letters to avoid the name collisions.