<iostream>与<iostream.h>对比"iostream.h"

Bea*_*red 32 c++ iostream

在C++中包含头文件时,有什么区别......

1)包括.h与不包括.h在<>中包裹它时?

#include <iostream> vs. #include <iostream.h>
Run Code Online (Sandbox Code Playgroud)

2)用双引号包装标题名称而不是用<>符号包装它?

#include <iostream.h> vs. #include "iostream.h"
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Ada*_*vis 49

简而言之:

iostream.h已被弃用 - 它是最初的Stroustrup版本,iostream是标准委员会的版本.通常编译器将它们指向同一个东西,但是一些较旧的编译器不会使用较旧的编译器.在一些奇怪的情况下,它们将存在并且不同(以支持遗留代码),然后您必须具体.

""与<>只是意味着在进入库之前检查本地目录中的标题(在大多数编译器中).

-亚当


小智 7

这是一篇不错的链接文章.

总结一下,原因如下:

标准委员会制作的iostream库版本与CFront实现有很大不同.{}剪断

为了简化转换,C++标准委员会声明包含标准C++标头的代码将使用缺少扩展的include指令.这允许编译器供应商发布带有.h扩展名的旧式C++库头和没有的新样式头.

不使用.h版本的优点:

使用头文件的无扩展版本而不是.h格式编写新代码有几个原因.第一个是在现代编译器上编译时这种代码的不可预测性.如前所述,使用.h头的结果是特定于实现的.随着时间的推移,给定编译器将旧样式库可用的机会减少.


小智 5

作为标准委员会(X3J16)中提议离开.h的人,我的初衷是解决关于.h,.H,.hpp,.hxx或.h ++文件扩展名的争论; 或者某些人希望标准中没有暗示这是磁盘上文件的名称,以便允许IDE将预编译的头信息从某个内部(例如资源文件)或者甚至是编译器.

虽然Unix认为文件名是单个字符串并且实际上没有识别扩展的概念,但DEC操作系统具有将名称与扩展名分开的传统,并且如果在特定上下文中省略它则提供"默认扩展名".这就是我从实现中使用实现想要使用的任何扩展的想法,并且它允许实现甚至不在磁盘上有这个文件.(我当时是委员会的DEC代表.)

区分标准和标准前标题是一个额外的好处.