I dondt think one can talk about namespaces at all regarding macros in
preprocessors. The preprocessor does not know what a namespace is. It
hardly knows anything about the underlying source language. Heck, you
can even replace reserved words with macros -- try to do THAT using
the global namespace in a normal way.....
Why? Namespaces are a natural extension present in most modern
languages to avoid collisions that occur frequently in larger programs.
Macro's being redefined by included headers from an unrelated piece of
code is a real problem in C/C++ programs.
Of course, most good programmers utilise some form of poor-mans
namespacing by prefixing their preprocessor names with something that's
likely to be unique. This illustrates the point that the feature would
be useful.