代码之家  ›  专栏  ›  技术社区  ›  aJ.

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

  •  10
  • aJ.  · 技术社区  · 16 年前

    我有一个基本的疑问。 STL头没有 .h 延伸。

    #include <vector>
    #include <map>
    

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

    编辑 :

    GMan发现 Michael Burr's answer 它解决了这个问题。

    1 回复  |  直到 16 年前
        1
  •  10
  •   Anders Hansson    16 年前
    • include指令不会区分文件类型(它只是一个美化的复制粘贴操作),不会自动添加.h。
    • 在没有.h扩展的情况下提供C++标准头文件
    • 有时,供应商提供的向后兼容头文件具有相同的名称,并添加了.h扩展名。

    这一切都与名称空间有关。对于C++标准报头,H通常对应于适当的C++标准报头(没有.h扩展),然后发出一堆使用(类似的东西):

    文件:iostream.h

    #include <iostream>
    
    using std::iostream;
    using std::ostream;
    using std::ios;
    ...
    

    而不带.h扩展名的headerfile不会用所有定义的类和类型污染命名空间。