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

aJ.*_*aJ. 11 c++ standards stl

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

#include <vector>
#include <map>
Run Code Online (Sandbox Code Playgroud)

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

编辑:

@GMan找到了迈克尔伯尔的答案 来解决这个问题.

And*_*son 10

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

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

文件:iostream.h

#include <iostream>

using std::iostream;
using std::ostream;
using std::ios;
...
Run Code Online (Sandbox Code Playgroud)

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

  • iostream.h存在吗?我使用C++已有8年了,我从未想过...... (4认同)