Your assumption that all pre-defined macros follow the convension of
using upper-case and/or leading-underscore is invalid. In fact, this
was (part of) what James complained about. He specifically mentioned
"linux", but other examples are "unix" and "sun" (a quick count gave
a total of 13 such macros). The mentioned reference can help you with
these pre-defined macros.
Sure, the reference does not list SDK macros, but that is not its
purpose in the first place. I never claimed that it could be used to
_remove_ the possibility of name collision, only that it could be used
to _reduce_ it.
[ See http://www.yqcomputer.com/
[ comp.lang.c++.moderated. First time posters: Do this! ]