2015-12-31 11 views
5

Ich habe ein CPP-Programm auf Code :: Blocks geschrieben und kompiliert (MinGW). Es ist eine einfache Anwendung, zeigt aber ein großes Problem, das ich immer noch nicht lösen kann.Mein C++ - Code kompiliert, wird aber zu einem nicht-ablauffähigen Programm, das nicht funktioniert.

#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    std::cout << "Something here"; 
    return 0; 
} 

Wenn ich versuche, dieses Programm auszuführen (auf Codeblöcke [F9 - kompilieren und ausführen]) ich dies als Ergebnis: Console

Nichts passiert ...

Wenn ich ausführen es geht aus Codeblocks heraus, es öffnet sich einfach und verschwindet. Aber in den beiden Fällen ist es unerträglich, ich kann diesen Prozess nicht töten. Aber wenn ich versuche, den Computer neu zu starten, erhalte ich einen Fehler, der besagt, dass das Programm nicht korrekt initialisiert wurde. Ich weiß nicht, wie Programme zu debuggen sind, und ich weiß nicht, wie ich vorgehen soll. Kannst du mir helfen?

Sorry für irgendwelche Sprachfehler, ich bin kein Englisch-Master (noch). Vielen Dank.

Edit:

#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    std::cout << "Something here" << std::flush; 
    return 0; 
} 

Es Stills funktioniert nicht. Auch mit '\n' oder std::endl.

+1

Ich habe das Problem, das Sie erwähnten, nicht gefunden, und ich kopiere Ihren Code eingefügt. Also offensichtlich gibt es kein Problem mit dem Code. Etwas anderes verursacht dieses seltsame Verhalten. Kann etwas sein, das mit den Compiler-Einstellungen von Code :: Blocks zusammenhängt (Ich habe das Programm kompiliert und das Programm auf meinem code :: blocks mit F9 ausgeführt) –

+9

Der häufigste Grund für [ein leeres Konsolenfenster] (http: // stackoverflow. com/questions/33690697/running-my-c-code-gibt mir eine leere Konsole) verwendet Avast Anti-Virus. –

+0

@Bo Persson Danke, das Problem war die Avast. –

Antwort

3

Sie haben nicht std::flush Ihre Ausgabe, so dass die "etwas hier" auf dem internen Puffer von std::cout stecken bleibt und nicht gedruckt wird, bevor Ihr Programm endet.

dass zu beheben, können Sie (eine Auswahl):

  • std::cout << "Something here" << std::endl;
  • std::cout << "Something here\n";
  • std::cout << "Something here" << std::flush;
+2

'std :: cout' Puffer wird als Teil seiner Zerstörung geleert. Es könnte etwas mit den POSIX-Anforderungen zu tun haben, ein tatsächliches Endline-Symbol am Ende der Zeile zu haben. –

+0

@Revolver_Ocelot Ich kann keine autoritative Quelle finden, die sagt, dass 'std :: cout' bei Zerstörung zerstört wird. Kannst du eins verlinken? – YSC

+0

@YSC Ist [diese] (http://en.cppreference.com/w/cpp/io/ios_base/Init) gut genug Quelle? –

3

Dank Bo Persson (das auf meinem Posten kommentiert), feste I es durch Ausschalten meines Antivirus (Avast). Vielen Dank!

Edit:

std::cout << "Something here"; (ohne std::flush) funktioniert auch nach Avast deaktivieren.

Verwandte Themen