【问题标题】:why STL header files have no extension?为什么 STL 头文件没有扩展名?
【发布时间】:2009-05-23 09:34:36
【问题描述】:

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

#include <vector>
#include <map>

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

编辑

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

【问题讨论】:

  • 谢谢@GMan。我在 SO 和 Google 中的搜索没有发现这一点。那是因为链接的问题有点不同。无论如何,我觉得 Michael Burr 的回答解决了我的问题。

标签: c++ stl standards


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

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

文件:iostream.h

#include <iostream>

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

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

【讨论】:

    猜你喜欢
    • 2021-05-14
    • 2013-09-23
    • 2010-10-07
    • 2016-12-24
    • 2012-06-09
    • 2011-08-23
    • 1970-01-01
    • 2021-08-22
    • 2015-07-23
    相关资源
    最近更新 更多