当在C++中包含一个头文件时,...
1)在<>符号中包含.h而不是不包含.h?
#include <iostream> vs. #include <iostream.h>2)用双引号将标题名称括起来,还是用<>符号将其括起来?
#include <iostream.h> vs. #include "iostream.h"提前感谢!
发布于 2008-10-18 00:16:15
简而言之:
iostream.h已被弃用-它是原始的Stroustrup版本。iostream是来自标准委员会的版本。通常,编译器会将它们指向相同的东西,但一些较旧的编译器不会使用较旧的编译器。在一些奇怪的情况下,它们将同时存在并且是不同的(以支持遗留代码),因此您必须具体说明。
""与<>的区别仅仅是指在进入库之前检查本地目录中的头文件(在大多数编译器中)。
发布于 2008-10-18 00:11:41
下面是一个不错的链接article.
总而言之,给出的原因如下:
标准委员会生成的iostream库的版本
与CFront实现有很大的不同。{snip}
为了简化过渡,C++标准委员会声明,包括标准C++头的代码将使用缺少扩展的include指令。这允许编译器供应商发布带有.h扩展的旧样式C++库头和没有扩展名的新样式头。
不使用.h版本的优势:
为什么应该使用头文件的无扩展版本而不是.h表单来编写新代码,这有几个原因。首先是这些代码在现代编译器上编译时的不可预测性。如前所述,使用.h头的结果是特定于实现的。随着时间的推移,给定编译器拥有旧样式库的可能性会降低。
发布于 2013-11-01 10:02:02
作为标准委员会(X3J16)中提出放弃.h的人,我最初的目的是解决关于.h、.H、.hpp、.hxx或.h++文件扩展名的争论;或者一些人希望在标准中没有暗示这是磁盘上文件的名称,以便允许集成开发环境从内部的某个位置(如资源文件甚至编译器内部)中提取预编译头信息。
虽然Unix认为文件名是一个单独的字符串,实际上并不识别扩展名的概念,但DEC操作系统有将名称与扩展名分开的传统,如果在特定上下文中省略了扩展名,则提供“默认扩展名”。这就是我的想法,让实现来使用它想要使用的任何扩展名,并且它允许实现甚至不在磁盘上有一个文件。(我是DEC的代表。在当时的委员会。)
区分标准和标准前的报头是一个额外的好处。
https://stackoverflow.com/questions/214230
复制相似问题