1.
#include<iostream>
using namespace std;
int main()
{
return 0;
}
2.
#include<iostream>
int main()
{
return 0;
}
3.
#include<iostream.h>
int main()
{
return 0;
}
感谢您的预先帮助。
#include<iostream>
using namespace std;
int main()
{
return 0;
}
#include<iostream>
int main()
{
return 0;
}
#include<iostream.h>
int main()
{
return 0;
}
就产生的程序而言,没有任何区别-由于程序中没有引用库中的任何内容,任何智能编译器都不会将该库编译进去。
当您使用#include <iostream>
时,您正在包含具有iostream标准库声明的头文件。使用#include <iostream.h>
与#include <iostream>
实际上基本相同,只是它将整个库的名称定义在全局命名空间中,而不是在std::
中,这是为了向后兼容使用未删除.h
的原始版本iostream的程序。(<iostream.h>
版本通常也不支持宽字符,仅支持标准的char
)。
using namespace std;
表示当前文件中名称引用的默认命名空间将为std
,这是大多数标准库函数使用的命名空间。虽然这意味着您不必在所有标准库调用前加上std ::
前缀,但这也意味着您必须小心不要定义任何与标准库名称重叠的内容。
iostream.h
将东西放在全局命名空间中(尽管太阳下没有编译器实际这样做)。我可能是错的。 - Billy ONeal第三个问题中有一个头文件错误。
头文件iostream.h是非标准头文件,在所有平台上都不存在。事实上,在我的系统上(使用g++和GNU libstdc++),它并不存在。因此,任何使用它的代码都无法在我的系统上编译。
在C++于1998年首次标准化之前,iostream.h头文件曾经很常见。但自从98标准使用<iostream>
代替<iostream.h>
以来,后者已经不再受到青睐(因为它是非标准的),并且在所有平台上都不再受支持。使用它的代码应被视为非标准遗留代码,不可移植。教授它的书籍应被视为过时的并应予以避免。
iostream
是一个头文件,提供了声明和原型,是C++标准库的一部分接口。
在您的系统上,有一个名为“iostream”(没有扩展名)的文件,其内容被复制并粘贴(带有#include
的递归处理)到您编写#include <iostream>
的位置。
#include
指令总是会拉入头文件的内容,它们不会添加“库”。头文件通常包含了一些声明和原型,是库的接口,但实际的库本身是由链接器附加到您的程序中的,而不是编译器。在链接C++程序时,链接器会自动附加C++标准库,除非您告诉它不要这样做,因此您不必担心这个问题。
同样,using namespace std
语句并不执行附加库的工作。该语句只是让您可以写例如cout
或string
,而不是将它们限定为std::cout
和std::string
。这对于任何命名空间都有效,但通常不建议这样做。
对于您给出的三个示例,它们都提供了使用C++标准库iostream部分所需的定义和原型,但(2)是首选,(1)是可接受的,(3)已被弃用。 (2)提供了额外的便利性,即可以省略std::
前缀(代价是减少您自己可以使用的变量名称),而(3)包含一个名为“iostream.h”的不同文件,而不是“iostream”,这通常是相同的东西,但带有.h的文件是C++标准化之前的遗留物,因此可能在未来的编译器中不受支持。
你的前两个程序是标准的C++程序,而第三个程序使用了一个非标准的头文件<iostream.h>
在第一个程序中,using namespace std
将整个命名空间std
引入作用域。
请查看this以获取更多信息。
<iostream.h>
是一个已弃用的头文件。此外,为了禁用使用<iostream.h>
时出现的警告,我们使用gcc的-Wno-deprecated
选项。那么我找不到<iostream.h>
不能被称为弃用的原因?请详细说明。 - Prasoon Sauraviostream.h
。 - Component 10
std::cout
,而不是cout
。 - Tyler McHenry