为什么STL头文件没有扩展名?

时间:2009-05-23 09:34:37

标签: c++ stl standards

我有这个基本的怀疑。 STL标头没有.h扩展名。

#include <vector>
#include <map>

这背后有什么具体原因吗?有人知道这背后的历史,请分享。

修改

  

@GMan找到Michael Burr's answer   这解决了这个问题。

1 个答案:

答案 0 :(得分:10)

  • #include指令不区分文件类型(它只是一个美化的复制粘贴操作) - 没有自动添加.h。
  • 提供的C ++标准头文件没有.h扩展名
  • 有时,供应商提供了向后兼容性头文件,其名称与添加的.h扩展名相同。

这一切都与名称空间有关。 C ++标准头文件的.h对应文件通常#includes正确的C ++标准头文件(没有.h扩展名)然后发出一堆使用(类似这样):

文件:iostream.h

#include <iostream>

using std::iostream;
using std::ostream;
using std::ios;
...

而没有.h扩展名的头文件不会使用所有已定义的类和类型污染名称空间。