I've seen some information about differences between things like iostream vs iostream.h.
[iostream.h] is not a standard header.
it is not an example of the issue you're raising.
[cmath] defines symbols in the std
namespace, and may also define symbols in the global namespace. [math.h] defines symbols in the global namespace, and may also define symbols in the std
namespace. if you include the former and use an unqualified symbol, it may compile with one compiler but not with another. therefore it's a good idea to use [math.h]. and in general, for such header pairs, to use the [.h] version.
c++98 provided a formal guarantee of the cxxx
header not polluting the global namespace. maybe that was why they were defined. however, that was a bit harder to implement than polluting ones, so in practice no standard library implementation that i know of followed the standard in this respect, and so it was finally changed to reflect reality in c++11.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…