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

标签 c++ stl standards

我有这个基本的疑问。 STL header 没有 .h 扩展名。

#include <vector>
#include <map>

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

编辑:

@GMan found Michael Burr's answer which addresses this question.

最佳答案

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

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

文件:iostream.h

#include <iostream>

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

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

关于c++ - 为什么STL头文件没有扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/901216/

相关文章:

c++ - 如何将派生类的指针传递给基类指针的引用?

c++ - 如何在 std::map 中使用表示不透明字节的类?

html - 在网页中显示缩略图的最佳实践

c - 限定符、修饰符、说明符

c++ - <algorithm> 是否包含 <cmath>?

c++ - 如何将参数传递给由注册表启动的 C++ 程序?

c++ - 为什么 operator = 不从模板类继承

C++ 静态变量在 Release模式下初始化错误

c++ - 如何在 std::unique_ptr 的 std::vector 上使用remove_if?

c++ - 设置类的 char* 属性