%3F.png)
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::cout
eine 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.h
zu ändern iostream
. Ich habe auch den gleichen Fehler erhalten wie Sie, aber als ich iostream.h
nur 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 .h
Erweiterungen.
Wie erwähntRiccardo Murris Antwort, müssen Sie auch cout
mit dem vollqualifizierten Namen aufrufen std::cout
oder eine dieser beiden Zeilen verwenden (vorzugsweise unter Ihren #include
Anweisungen, 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::cout
nicht alle Namen im Namespace einbezieht std
(von denen einige möglicherweise mit den in Ihrem Programm verwendeten Namen in Konflikt geraten könnten).