如何编译C ++源代码(“找不到iostream.h”错误)?


20

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

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

在vim中打开hello.cpp并将其写入

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

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

g++ hello.cpp

与的输出是

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

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


2
万一有人考虑投票关闭该问题,以解决题外问题:这确实是特定于平台的问题,因为最流行的Windows C ++编译器(Microsoft Visual C ++)接受此语法,但大多数其他编译器(包括g++Ubuntu)不接受。
伊利亚·卡根

#include <iostream>使用命名空间std; int main(){cout <<“ Hello World”; 返回0; }这可以工作...

Answers:


43

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

您可以在.h和非.h表格上阅读到比您想知道更多的东西:http : //members.gamedev.net/sicrane/articles/iostream.html

(此外,您应该写std::cout一行,using namespace std;否则一行会出现错误,否则下一个错误将是有关编译器没有为定义的cout。)


4
@gabriel C ++的历史可追溯到1980年中期。现在有一些已发布的标准,其中的最新标准(C ++ 11)已于今年早些时候发布,而前一个标准(所有编译器都遵循的标准)可追溯到2003年(C ++ 03)。从它所提到的编译器软件来看,您所链接的指南似乎比该指南要旧得多(根据Wikipedia,Borland Turbo C ++于1994年停产)。如果选择遵循C ++ 03标准的教程,则您的代码将可在当今可用的任何Linux发行版上运行。
里卡多·穆里

1
@gabriel看来您的问题已经在StackOverflow上得到了解答:stackoverflow.com/questions/909323/…–
Riccardo Murri,

1
您可能还需要:sudo apt-get install build-essential
david6'5

2
@ david6:我已经安装了build-essential,但是iostream.h我的系统上没有。实际上,C ++头文件是由libstdc ++-dev安装的,这是C ++编译器软件包g ++所必需的,而后者又是build-essential所必需的。因此,不,您不需要构建必需的程序就可以编译简单的C ++程序。安装g++软件包就足够了。
里卡多·穆里

1
对于cout没有std::前缀的工作,using std::cout;最好使用using namespace std;。通常,甚至使用多个using语句(不带namespace)也更好,因为您不会从std不需要的命名空间中引入标识符,并且可能与自己程序中的名称冲突。
伊利亚·卡根

15

您应该更改iostream.hiostream。我也遇到了与您相同的错误,但是当我更改iostream.h为just时iostream,它可以正常工作。也许它也会为您工作。

换句话说,更改以下行:

#include <iostream.h>

改为这样说:

#include <iostream>

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

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

using namespace std;
using std::cout;

第二种方法被认为是可取的,特别是对于认真的编程项目,因为它只会影响std::cout,而不是将所有名称引入名称std空间(其中某些名称可能会干扰程序中使用的名称)。


好答案。在回答@gabriel的问题时,您已经解决了我多年以来的一些困惑。
同构
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.