在新的C++标准中,生成新头文件的方法仅仅是将现有C++头文件名中的.h去掉。例如,<iostream.h>变成了< iostream>,<complex.h>变成了<complex>,等等。对于C头文件,采用同样的方法,但在每个名字前还要添加一个c。所以C的<string.h>变成了<cstring>,<stdio.h>变成了< cstdio>,等等。
旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C头文件则没有(以保持对C的兼容性)。
下面是C++头文件的现状:
· 旧的C++头文件名如<iostream.h>将会继续被支持,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。
· 新的C++头文件如<iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)
· 标准C头文件如<stdio.h>继续被支持。头文件的内容不在std中。
· 具有C库功能的新C++头文件具有如<cstdio>这样的名字。它们提供的内容和相应的旧C头文件相同,只是内容在std中。
如果编译器同时支持<iostream>和
<iostream.h> 。如果使用了#include
<iostream>, 得到的是置于名字空间std下的iostream 库的元素;
如果使用#include <iostream.h>,得到的是置于全局空间的同样的元素。在全
局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名
字冲突的发生.