Identifiers with two initial underscores or an initial underscore followed by an uppercase letter are reserved globally for the use by the compiler.
Identifiers that begin with an underscore are reserved as identifiers with
file scope in both the ordinary and tag name spaces.
C++ extends the C reservations to include more identifiers in a
larger name space. Any name that contains double underscores anywhere
is reserved. Any identifier that begins with an underscore is reserved
in the global namespace.
Related References
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.