* Jeff Schwab:
The rational, in-practice way to deal with it is to use the <c*>
headers, but be aware that the global namespace may be polluted.
That may help with being socially conforming, which is important in some
environments, and you're saying, by claiming that it's rational for you, that
being socially conforming is very important in your environment -- OK.
However, using a header whose sole purpose is to not pollute the global
namespace, but "being aware" that in practice it does pollute the global
namespace, i.e. using a header that in practice does not achieve its sole
purpose, is just plain stupid with respect to *good programming*, for it is
* to actively provide disinformation to the reader of the code, and
* to make the compiler unable to report non-standard use or lack of
qualification.
Regarding the latter point, the in-practice is that <cXXX> allows more than the
standard requires of that header, i.e. possibility of writing non-portable code,
while <XXX.h> allows less than the standard requires of that header.
But that point is IMHO not so important, because there is almost no work
involved in fixing code that should turn out to not compile with some compiler.
The first point is however important. For simply by using <cXXX> one helps to
disseminate incorrect beliefs about it, including that it is of some value.
Using a wrapper header without without any positive advantage and with the
disadvantages of disinforming the reader and restricting how much the compiler
can help you, when there is a good alternative, just says: this programmer has
not understood one iota of what the header he or she is using, is about.
Cheers & hth.,
- Alf