Mobile

C++ Was ist falsch! Anfänger!

carpot

Cadet 4th Year
Registriert
Jan. 2007
Beiträge
113
Hallo zusammen,

ich möchte gerne C++ erlernen. Dafür habe ich mir das Buch "C++ für Spieleprogramierer" besorgt, allerdings Auflage 2. Desweiteren habe ich mir Microsoft Visual C++ 2010 Express heruntergeladen. Leider gibt es schon beim ersten Listing Probleme.

ich gebe ein:

#include <iostream>

und das Programm sagt mir:

Der Befehl "#include" ist ungültig.

Daraufhin habe ich mir Dev C++ heruntergeladen und das ganze Listing eingetippt, so wie es im Buch steht, nur ohne Kommentare.

#include <iostream>

using namespace std;

int main()
{
cout << "Hier kommt die Konkurrenz! \n";
return 0;
}

In Dev wird das Programm nachdem compilieren ausgeführt, allerdings erscheint nur für den Bruchteil einer Sekunde ein Fenster und verschwindet.

Kann mir da jamend weiterhelfen?

mfg carpot
 
system("PAUSE");
 
Am besten führst du das Programm einfach in der DOS Kommandozeile aus.
 
hi,

wie Agratos schon meinte
Code:
system("PAUSE");
oder
Code:
getchar();
nach dem
Code:
cout
einfügen.

Dein jetziges Programm springt rein in die Main-Methode, gibt dann die Meldung aus (cout) und dann kommt sofort ein return (also verlassen der Methode), wodurch das Programm beendet wird. Deswegen musst du am Ende der Main-Methode vor dem return eine Pause einbauen oder auf einen Tastendruck warten.

MfG
 
Danke Agratos ,

jetzt schaut mein Programm so aus.

#include <iostream>

using namespace std;

int main()
{
cout << "Hier kommt die Konkurrenz! \n";
system("PAUSE");
}

aber warum steht es so nicht im Buch. Für was brauche ich dann return 0;

Auch Dir Danke Neomon.

Warum klappt es nicht im Microsoft Programm?
 
Weil es grundsätzlich blödsinnig ist, die pause im Programm selber auszulösen...

retrun 0; ist in dem fall der exit code vom programm.
 
ist #include bei dir farbig?
wenn nicht könnte MSV falsch eingestellt sein. geht meistens bei neuinstallation weg.
 
Das muss auch in Visual C++ funktionieren. Wenn er sagt "Befehl #include ist ungültig" dann hast du vermutlich noch irgendwas in der Datei stehen, was da nicht reingehört.
 
Eine Funktion muss einen Rückgabewert haben, auch wenn dieser unwichtig ist. Deswegen steht da return 0!
 
Es wird in Büchern nicht aufgeführt, weil davon ausgegangen wird, dass du es vom CMD aus startest :)
 
Ich kann dir als Anfängerbuch das "Einstieg in C++" von Arnold Willemer, ISBN: 978-3-8362-1385-1, 24,90€ empfehlen. Damit habe ich damals C++ gelernt und rückblickend im Vergleich mit anderen Büchern finde ich das echt am allerbesten. Bringt auf einer CD auch Compiler mit und erklärt, wie man die aufsetzt. Später im Buch werden auch schon etwas fortgeschrittenere Sachen behandelt wie STL oder Templates.
Ich kann es dir nur wärmstens empfehlen!
 
Danke erstmal für Eure Antworten.


Wenn ich das Programm aus der Kommandozeile starte läuft es genauso wie es im Buch steht.
Wäre ich wohl nicht drauf gekommen.

Also, wenn ich den Befehl "#include <iostream>" im Microsoft Express 2010 eingebe und return drücke steht dort nur Befehl ungültig. Es wird nicht farblich hervorgehoben!
 
Hast du in Visual C++ auch korrekt ein C++ Projekt angelegt?
 
.. oft ist es sehr wichtig, ein leeres Projekt zu erstellen. (also ohne einen vorkompilierten header)
 
Theoretisch musst Du in VS C++ nur eine C++-Konsolenanwendung erstellen. Dann erstellt Dir VS alles nötige und du müsstest sofort die Main-Methode im Fokus haben. Hier kannst du jetzt einfach mal dein "cout" reinsetzen und ein bissl experimentieren.
 
hydrox schrieb:
Eine Funktion muss einen Rückgabewert haben, auch wenn dieser unwichtig ist. Deswegen steht da return 0!
Nein, muss sie nicht.
Falsch - man kann auch Funktionen ohne Rückgabewert programmieren. Schau dir mal den "void" an ...
 
Vielleicht solltest du das Buch auch einfach mal lesen und nicht nur den Code abtippen.
 
Der Grund warum dein Programm einfach verschwindet ist, weil es ein Command Line Tool ist, es gibt lediglich den Text auf Standard Out (das macht cout) aus (das ist die Konsole), und beendet sich, weil anschließend das end-Token (return) für die main Methode erreicht wird.

Du musst einfach in das Verzeichnis wechseln, wo das Kompilat liegt, und dort in der Konsole (cmd exe unter Windows) dein Programm aufrufen, dann bleibt die Nachricht dort auch stehen.

Zu dem return code:

Unwichtig ist der in der tat nicht, denn darüber kann mitgeteilt werden, ob z.B. eine Speicherschutzverletzung aufgetreten ist (SIGSEGV) oder etwas anderes. Dies ist eine effektive (wenn auch komplizierte, wie ich finde) Fehlerbehandlung. Wenn du dich mit C++ beschäftigst, wirst du merken, dass die return Codes sehr brauchbar sind, um z.B. in der Signatur einer Methode (die Aufrufparameter) bestimmte Tests zu machen (z.B. für while(), for(), if() und elseif().

@ Void: JA, aber nicht die Main Methode, die muss nach Konvention einen return Wert haben.

VLG
 
Also,

wenn ich ein lerres Projekt erstelle erscheint immer der oben beschreibene Fehler.
Wenn ich eine Konsolenanwendung erstelle, kann ich den Text eingeben, bzw. den Test den das Programm schon erstellt bearbeiten. Es kommen keine Fehler. Allerdings kann ich es nicht compilieren oder ausführen. Wahrscheinlich ist es für mich als Anfänger recht schwer sich dort zurecht zukommen. Ich werde für den Anfang erstmal bei Dev C++ bleiben.

Ich danke für die schnellen und guten Antworten.

Mfg carpot
 
Nur noch ein kleiner Tipp: Gerade das Programmieren einfacher Konsolenanwendungen ist unter Linux für den Einstieg erheblich leichter, als unter Windows - vielleicht riskierst du mal einen Blick. Und mit Eclipse CDT steht auch eine klasse Entwicklungsumgebung zur Verfügung. (Unter Windows gibts die natürlich auch)
 
Zurück
Oben