Visual Studio 2017



  • Danke für die ganzen Antworten, ich weiß jetzt aber immer noch nicht wie ich dafür sorge, dass das Programm sich nicht sofort schleißt.



  • manni66 schrieb:

    Starte das Programm mit Strg+F5 und gut iss.

    Oder starte es in einer Konsole.



  • DirkB schrieb:

    manni66 schrieb:

    Starte das Programm mit Strg+F5 und gut iss.

    Oder starte es in einer Konsole.

    Oder setze einen Breakpoint am Ende der main() Funktion.



  • [quote="dot"][quote="DirkB"][quote="manni66"]Starte das Programm mit Strg+F5 und gut iss.[/quote]
    Oder starte es in einer Konsole.[/quote]
    Oder setze einen Breakpoint am Ende der main() Funktion.[/quote]
    Mit Strg + F5 ändert sich nichts und wie setze ich einen Breakpoint?





  • Da dies alles Möglichkeiten sind, wo nur noch die Möglichkeit besteht, die Konsole über das Schließkreuzchen zu beenden, kannst Du ebenso gut eine kleine Endloschleife ans Ende der main() zu schreiben.

    Allerdings verstehe ich das Problem nicht. Stört es, das nur einmal das Alter abgefragt wird? Dann schreibe die Schleife um alle Anweisungen, als Bonus vielleicht eine Abfrage, wie diese Endlosschleife dann doch verlassen wird.



  • [quote="lemon03"]Allerdings verstehe ich das Problem nicht. Stört es, das nur einmal das Alter abgefragt wird? .[/quote]
    Das Problem ist das eben danach kein weiterer Code mehr geschrieben werden kann, wie du schon meintest, das man es nur noch durch schließen beenden kann. Das Programm schließt so schnell das nicht mal mehr die möglichkeit besteht den ausgegebenen Text zu lesen.



  • Also bei Eingabe von zB 22 kommt bei Dir nicht die Ausgabe "Sie duerfen kein Auto fahren!" und ein wartender Cursor?

    Dann müsste das an Visual Studio liegen. Das weiß ich dann aber leider nicht.



  • PS: Dann starte wirklich mal nur die .exe und schau, ob sie dann nach der Ausgabe stoppt und auf Tastendruck wartet.



  • [quote="lemon03"]Also bei Eingabe von zB 22 kommt bei Dir nicht die Ausgabe "Sie duerfen kein Auto fahren!" und ein wartender Cursor?

    Dann müsste das an Visual Studio liegen. Das weiß ich dann aber leider nicht.[/quote]
    Doch, mur das Programm schließt so schnell wieder, dass man den Text nicht lesen kann.



  • Nutzer1337 schrieb:

    Danke für die ganzen Antworten, ich weiß jetzt aber immer noch nicht wie ich dafür sorge, dass das Programm sich nicht sofort schleißt.

    Das liegt an dir, nicht an den Antworten.



  • Arcoth schrieb:

    audacia schrieb:

    Auch wenn es mir artifiziell vorkommt, daß du das nur auf Funktionsebene zulassen willst und nicht auch für Source-Dateien.

    Ich glaube nicht, dass (mit Doppel-s, Opa) das Wort "artifiziell" hier Sinn ergibt. </ot>

    Stimmt, "beliebig" hätte eher gepaßt. Und mach erst mal deine depperten Leerzeichen ("Source Dateien") weg, bevor du andere über die Orthographie belehrst.


  • Mod

    audacia schrieb:

    Arcoth schrieb:

    audacia schrieb:

    Auch wenn es mir artifiziell vorkommt, daß du das nur auf Funktionsebene zulassen willst und nicht auch für Source-Dateien.

    Ich glaube nicht, dass (mit Doppel-s, Opa) das Wort "artifiziell" hier Sinn ergibt. </ot>

    Stimmt, "beliebig" hätte eher gepaßt. Und mach erst mal deine depperten Leerzeichen ("Source Dateien") weg, bevor du andere über die Orthographie belehrst.

    Sagt wer? Du? 😃



  • In VS17 kannst Du F9 drücken, um in der aktuellen Zeile einen Breakpoint zu erstellen. Das erkennst Du dann an dem roten Punkt links von den Zeilenzahlen.

    Für solche trivialen Übungsprogramme unter Windows kannst du auch einfach system("pause"); ans Ende der main() dranhängen. Nach dem Sicherheitspatch für Meltdown/Spectre sind system calls zwar bis zu 50% langsamer, aber diesen performance-hit können wir in diesem Fall bedenkenlos vernachlässigen.

    Spaß beiseite, aber system("...") ist langsam, platformabhängig und irgendwie auch ein großes Sicherheitsrisiko, also wirklich nur für einfache Übungsprogramme nehmen. Das ist zwar nicht die optimale Lösung, aber alles Andere scheint aus welchem Grund auch immer nicht zu funktionieren.

    P.S.: Ich hoffe ich werde nicht gebannt, weil ich system("pause") vorgeschlagen habe.



  • Was spricht denn gegen

    std::cin.ignore()
    

    ?



  • anti-freak schrieb:

    Was spricht denn gegen

    std::cin.ignore()
    

    ?

    Probiers aus:

    #include <iostream>
    int main()
    {
        int x;
        std::cin >> x;
        std::cin.ignore();
    }
    


  • HarteWare schrieb:

    anti-freak schrieb:

    Was spricht denn gegen

    std::cin.ignore()
    

    ?

    Probiers aus:

    #include <iostream>
    int main()
    {
        int x;
        std::cin >> x;
        std::cin.ignore();
    }
    

    So hat er das nicht gemeint, er meinte ignore statt sync, und dann get.



  • Hallo Fragensteller,

    das Fenster schließt sich, weil die letzte Anweisung ausgeführt wurde und dann die Methode beendet wird. Wenn die main-Methode beendet wird, dann wird das Konsolenfenster geschlossen.

    Du kannst als WORKAROUND am Ende einer Konsolenanwendung schreiben:

    int offenhalten;
    std:cin >> offenhalten;
    

    oder auch

    std::cin.get();
    

    Damit bleibt das Fenster auf, bis zu erneut eine Eingabe machst.

    Übrigens ist deine Überschrift sehr schlecht. Sie hat nicht viel mit dem Inhalt zu tun. Da du bereits wusstest was das Problem ist hättest du schreiben können: "Wie verhindere ich, dass sich das (Konsolen-)Fenster schließt?"
    Oder
    "Ich habe das Problem, dass sich das (Konsolen-)Fenster schließt."

    Wie man Fragen richtig stellt: https://tty1.net/smart-questions_de.html

    Danke - Enomine



  • Enomine schrieb:

    Du kannst als WORKAROUND am Ende einer Konsolenanwendung schreiben:

    int offenhalten;
    std:cin >> offenhalten;
    

    oder auch

    std::cin.get();
    

    erste Seite, erster Beitrag, erster Code-Ausschnitt des Fragesteller:

    std::cin.sync();
       std::cin.get();
    


  • Jo dann weiß ich auch nicht xD

    Danke - Enomine


Anmelden zum Antworten