Two-Level Namespaces
oreilly.com
oreilly.com
Personnally, in C, I code my own "name mangling", aka namespace management with the C preprocessor:
#define short_name absolute_path_namespace_name
... code
#undef short_name
The additional work is much less toxic than a full blown namespace system. And I get easy one-compilation-unit code: C applications can grow to extremely large, be fully "componentized" without symbol collision.