关于c ++头文件包含的基本问题?

siv*_*iva 5 c++ header-files

以下3个课程有什么区别?<iostream>是头文件还是C++标准库?

1.

#include<iostream>
using namespace std;

int main()
{
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

2.

#include<iostream>

int main()
{
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

3.

#include<iostream.h>

int main()
{
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Amb*_*ber 13

对于生成iostream的程序,没有区别 - 因为程序中没有引用库,所以任何智能编译器都不会编译任何库.

当你#include <iostream>,你包括头文件与iostream标准库的声明.使用#include <iostream.h>基本相同#include <iostream>,除了它定义全局命名空间中的所有库名称,而不是在std::- 它与那些使用其原始版本iostream没有删除的程序的反向兼容.h.(这些<iostream.h>版本通常也不支持宽字符,但只支持标准字符char.)

using namespace std;表示当前文件中名称引用的默认名称空间std,即大多数标准库函数使用的名称空间.虽然这意味着您不必为所有标准库调用添加前缀std::,但这也意味着您必须小心不要定义与标准库名称重叠的任何内容.

  • @Billy:`iostream.h`在C++标准中不存在,所以它实际上并没有做任何事情; 一个人必须指定哪个实现.它是来自预标准C++的遗留物,在命名空间之前,所以在任何给定的实现上,它可能与`#include <iostream>`后跟`using`指令一样,将所有符号导出到全局命名空间. (3认同)
  • 实际上,我相信`iostream.h`会把东西放在全局命名空间中(即使在阳光下没有编译器实际上这样做).我错了. (2认同)

Pra*_*rav 1

前两个程序是标准 C++ 程序,而第三个程序使用非标准头文件<iostream.h>

在第一个程序中,using namespace std将整个名称空间纳入std范围内。

请查看此内容以获取更多信息。

  • 不过关于“no-deprecated”标志是公平的。也许“不合时宜”会是一个更好的描述?但最终,它(`iostream.h`)不应该与现代编译器一起使用。 (2认同)