Wie kompiliere ich C++-Quellcode (Fehler „iostream.h nicht gefunden“)?

Wie kompiliere ich C++-Quellcode (Fehler „iostream.h nicht gefunden“)?

Ich möchte nicht über C++ oder andere Programmiersprachen diskutieren! Ich möchte nur wissen, was ich beim Kompilieren von helloworld.cpp unter Linux und Ubuntu falsch mache!

Ich lerne C++, also sind meine Schritte:

Öffnen Sie hello.cpp in vim und schreiben Sie Folgendes

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

Danach habe ich im Terminal Folgendes versucht:

g++ hello.cpp

UND die Ausgabe ist

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

Was schlagen Sie vor? Gibt es eine nützliche Schritt-für-Schritt-Anleitung für mich? Danke!

Antwort1

Sie sollten verwenden #include <iostream>, nicht iostream.h; das.HDas Formular ist sehr alt und seit Jahren veraltet.

Mehr als Sie wahrscheinlich wissen möchten, können Sie auf der.Hvs nicht-.HFormulare hier: http://members.gamedev.net/sicrane/articles/iostream.html

(Außerdem sollten Sie std::couteine Zeile schreiben oder haben using namespace std;, sonst wird Ihr nächster Fehler darauf hinweisen, dass der Compiler keine Definition für findet cout.)

Antwort2

Sie sollten iostream.hzu ändern iostream. Ich habe auch den gleichen Fehler erhalten wie Sie, aber als ich iostream.hnur zu geändert habe iostream, hat es richtig funktioniert. Vielleicht funktioniert es auch bei Ihnen.

Mit anderen Worten: Ändern Sie die Zeile:

#include <iostream.h>

Lassen Sie stattdessen Folgendes sagen:

#include <iostream>

Die Headerdateien der C++-Standardbibliothek haben, wie im Standard definiert, keine .hErweiterungen.

Wie erwähntRiccardo Murris Antwort, müssen Sie auch coutmit dem vollqualifizierten Namen aufrufen std::coutoder eine dieser beiden Zeilen verwenden (vorzugsweise unter Ihren #includeAnweisungen, aber über Ihrem sonstigen Code):

using namespace std;
using std::cout;

Die zweite Methode ist vor allem bei ernsthaften Programmierprojekten vorzuziehen, da sie nur Auswirkungen hat und std::coutnicht alle Namen im Namespace einbezieht std(von denen einige möglicherweise mit den in Ihrem Programm verwendeten Namen in Konflikt geraten könnten).

verwandte Informationen