Wieder mal <iostream>

JuSchu85

Mitglied
Ich hab schon mal die Suche bemüht und auch viele Threads mit Problemen bei dieser Bibliothek gefunden, aber nichts hat wirklich geholfen.

Auf jeden Fall arbeite ich mich gerade wieder in c++ ein und da ich vorher auch nicht soo viel gemacht hab, fange ich wieder mit dem "hallo welt" programm an.
Code:
#include <iostream>
using namespace std;

int main()
{
   cout << "Hallo Welt!" << endl;
   return 0;
}
Da komme ich jetzt noch nicht mal über das Kompilieren hinaus. Ich kriege immer die Meldung:
1>.\hallo welt.cpp(3) : warning C4627: "#include <iostream>": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.

Weiter unten stand auch noch:
1>.\hallo welt.cpp(12) : fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "stdafx.h"" einzufügen?

Dann habe ich natürlich diese "stdafx.h" auch includiert (zugegeben ohne wirklich zu wissen, was es eigentlich ist).
Darauf hin sind aber folgende Fehlermeldungen hinzugekommen:
1>.\hallo welt.cpp(5) : error C2871: 'std': Es ist kein Namespace mit diesem Namen vorhanden
1>.\hallo welt.cpp(9) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>.\hallo welt.cpp(9) : error C2065: 'endl': nichtdeklarierter Bezeichner

Wenn <iostream> von Anfang an nicht eingebunden wurde hätten die Fehlermeldungen über den nichtdeklarierten Bezeichner doch auch vorher kommen müssen, oder nicht?

Was mache ich denn da falsch?
Als ich das Buch, was ich gerade wieder angefangen habe, das erste mal durchgearbeitet hab, hatte ich nie dieses Problem.
Ich denke mal, dass es daran liegt, dass sich mittlerweihle was in VisualStudio geändert hat.
Damals hab ich nämlich ne Studentenversion von VS6 benutzt. Jetzt benutze ich VS-Express2008.
Aber es kann doch wohl nicht daran liegen, dass es ne Expressversion ist.



Und mal was offtopic: Währe es sinnvoll sowieso mit meiner alten Studentenversion weiterzuarbeiten, oder währe es sinnvoller das aktuelle VS (wenn auch Expressversion) zu benutzen.

Ich wollte auch mal gucken, was mich das Update kosten würde. Aber was würde überhaupt dafür sprechen.
 

MCoder

Erfahrenes Mitglied
Hallo,

an welcher Stelle hast du denn #include "stdafx.h" eingefügt? Es ist ganz wichtig , dass diese Zeile immer an erster Stelle im Code steht.
Ansonsten könntest du auch bei den Eigenschaften der cpp-Datei die Verwendung vorkompilierter Header deaktivieren. Dann kannst du dir das Include ersparen.

Mit der Express-Version hast du zumindest einen aktuellen Compiler, da der vom VS6 schon etwas antik und nicht ganz fehlerfrei ist.

Gruß
MCoder
 

JuSchu85

Mitglied
Danke für die schnelle Hilfe :)
Beide Tips haben funktioniert.

Aber wofür ist dieses "stdafx.h" eigentlich gut?
std -> Standard?
afx -> :confused:
 

MCoder

Erfahrenes Mitglied
Aber wofür ist dieses "stdafx.h" eigentlich gut?
Das ist das Thema mit den vorkompilierten Headern und in der Form eine Spezialität des Microsoft-Compilers. In die "stdafx.h" schreibt man alle Header rein, die relativ unveränderlich sind. Diese werden einmal kompiliert und können dann bei weiteren Compilerläufen ohne erneute Kompilierung verwendet werden. Bei großen Projekten kann man da erheblich Zeit bei der Erstellung des Projektes sparen.

Gruß
MCoder