如何编译 C++ 源代码(“iostream.h not found”错误)?

gab*_*iel 23 compiling c++

我不想讨论 C++ 或任何编程语言!我只想知道我在 linux ubuntu 上编译 helloworld.cpp 做错了什么!

我正在学习 C++,所以我的步骤是:

在 vim 中打开 hello.cpp 并写下这个

#include <iostream.h>
int main()
{
    cout << "Hello World!\n";`
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以,在那之后我在终端中尝试了这个

g++ hello.cpp
Run Code Online (Sandbox Code Playgroud)

并且输出是

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

你有什么建议?任何对我有用的分步指南?谢谢!

Ric*_*rri 46

你应该使用#include <iostream>,而不是iostream.h; 该.H形式是很旧,从几年弃用。

您可以在此处阅读.h与非.h形式的更多内容:http : //members.gamedev.net/sicrane/articles/iostream.html

(另外,你应该写std::cout或写一行,using namespace std;否则你的下一个错误将是关于编译器没有找到 的定义cout。)

  • @gabriel C++ 有着悠久的历史,可以追溯到 1980 年中期。现在有几个已发布的标准,其中最新的 (C++11) 已于今年早些时候发布,而前一个(今天所有编译器都遵循的标准)可以追溯到 2003 年 (C++03)。不过,从它提到的编译器软件来看(根据维基百科,Borland Turbo C++ 于 1994 年停产),您链接的指南似乎比这更古老。如果您选择遵循 C++03 标准的教程,您的代码将适用于当今可用的任何 Linux 发行版。 (4认同)
  • @david6:我安装了 *build-essential*,但我的系统上没有 `iostream.h`。实际上,C++ 头文件是由 *libstdc++-dev* 安装的,它是 C++ 编译器包 *g++* 所必需的,而 *build-essential* 又需要它。所以,不,你不需要 *build-essential* 来编译简单的 C++ 程序;安装`g++` 包就足够了。 (2认同)

小智 16

您应该更改iostream.hiostream. 我也遇到了和你一样的错误,但是当我改为iostream.hjust 时iostream,它工作正常。也许它也适合你。

换句话说,更改以下行:

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

让它这样说:

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

标准中定义的 C++ 标准库头文件没有.h扩展名。

正如Riccardo Murri 的回答所述,您还需要cout通过其完全限定名称进行调用std::cout,或者使用以下两行之一(最好在您的#include指令下方但在您的其他代码上方):

using namespace std;
Run Code Online (Sandbox Code Playgroud)
using std::cout;
Run Code Online (Sandbox Code Playgroud)

第二种方式被认为更可取,尤其是对于严肃的编程项目,因为它只影响std::cout,而不是引入std命名空间中的所有名称(其中一些可能会干扰程序中使用的名称)。