visual c++ anfängerproblem
-
Leute ich hab gerade angefangen, bin also blutiger beginner.
das is der code...
#include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { cout << "blabla"; getchar(); return(0); }
das problem ist, dass sich das konsolenfenster sofort schliesst...
"hallo welt.exe": "C:\Users\David\Documents\Visual Studio 2010\Projects\hallo welt\Debug\hallo welt.exe" geladen, Symbole wurden geladen. "hallo welt.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Symbole geladen (ohne Quellinformationen). "hallo welt.exe": "C:\Program Files\AVAST Software\Avast\snxhk.dll" geladen, Exporte wurden geladen. "hallo welt.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Symbole geladen (ohne Quellinformationen). "hallo welt.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Symbole geladen (ohne Quellinformationen). "hallo welt.exe": "C:\Windows\SysWOW64\apphelp.dll" geladen, Symbole geladen (ohne Quellinformationen). SHIMVIEW: ShimInfo(Complete) "hallo welt.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen. Das Programm "[6888] hallo welt.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.
vielleicht kann mir wer helfen
-
Dafür gibt es doch die Suchfunktion ...
-
danke, hätt ich machen sollen, stimmt!
problem ist aber noch immer da obwohl ich das jetzt so gemacht habe... :S
-
Probiere doch zusätzlich zu #include stdio.h die Zeile #include stdiolib.h eingeben.
Am Schluß des Programms gibst Du dann folgendes ein:
system("Pause")
return 0:Mit stdiolib (in dem die Funktion system (Pause) enthalten ist wird die Konsole angewiesen offenzubleiben. Du kannst sie dann nach Aufforderung per Tastendruck beenden..
Wenn ich damit falsch liegen sollte - seht es mir nach, ich stehe auch erst am Anfang. Mit MS Visual C++ funktioniert das jedenfalls.
Gruß Wolfgang
-
Einfacher ist es den Debugger zu verwenden und einen Breakpoint auf dem return von main zu setzen.
Oder mit Strg+F5 das Programm ohne Debugger zu starten. Dann hält die Konsole von selbst an.Dieser System Pause Quatsch und getchar ist nicht nötig.
-
Einfacher ist es den Debugger zu verwenden und einen Breakpoint auf dem return von main zu setzen.
Oder mit Strg+F5 das Programm ohne Debugger zu starten. Dann hält die Konsole von selbst an.Dieser System Pause Quatsch und getchar ist nicht nötig.
-
Versuche folgendes:
- Öffne Kommandozeile
- Finde Datei VSVARS32.BAT oder VCVARS32.BAT 1 in irgend einem "bin"-Verzeichnis
von Deiner Visual Studio Version und rufe sie Auf (z. B. VCVARS32)
HINT: Kopiere diese Batch-Datei in ein Verzeichnis, dass in Deinem
Path vorkommt - Übersetze folgendes Programm (läuft bei mir einwandfrei) mit folgendem Befehl (direkt
von der Kommandozeile aus:
cl -EHsc programmname.cpp
Wichtig: -EHsc muss exakt so eingegeben werden (Groß-/Kleinschreibung ist bei
Optionen signifikant) und auch die Dateiendung ".cpp" muss angegeben werden.
"CL ... programmname" funktioniert nicht (Suffix wird beim CL-Kommando nicht
automatisch ergänzt, der Compiler unterscheidet an der Endung ob es C oder C++
Code ist). Bei den Befehlen (z. B. "cl") ist die Schreibweise dagegen egal, es ginge auch Cl.//#include "stdafx.h" // diese Include-Datei kenne ich nicht, // evtl. auch zwischen "<" ">" einschließen // N E I N : So wie jetzt (ohne obiges Include) wird das // Programm bei mir einwandfrei compiliert (VS 2005) // und korrekt ausgeführt // #include "iostream" // FALSCH(!) - Richtig: #include <iostream> // Es ist eine Standard-Header Datei(!) // Standard-Header-Dateien werden in "<...>" // eingeschlossen. WARNUNG: < iostream > ist // FALSCH (Leerzeichen sind bei den spitzen // Klammern signifikant(!). using namespace std; // Mag sein, das Microsoft das so möchte: // int _tmain(int argc, _TCHAR* argv[]) // { // IMHO schlechter Stil, Stroustrup schreibt die öffnente Klammer // // auf der selben Zeile, z. B. int main(int argc,char *argv[]) { // // ... sonst bekommt man einfach zu viele Zeilen. // ich würde folgendes verwenden: int main(int argc,char *argv[]) { // cout << "blabla"; // Hier würde ich: cout << "blabla" << endl; // verwenden, damit auch Newline geschrieben wird getchar(); // Wenn man es direkt von der Kommandozeile aus aufruft, kann man // sich diese Zeile auch sparen - beim Debugger ist sie evtl. nützlich return(0); }
1): Ganz wichtig: Evtl läuft es trotzdem nicht, siehe hierzu meinen anderen Beitrag.
p.s.: Die Option -EHsc ist nicht unbedingt notwendig, aber ohne "hagelt" es
jede Menge Warnungen.
-
Vielen Dank mit dem Tipp Strg+F5, habe das erst jetzt testen können.
Gruß Wolfgang