Kompilierte Anwendung scchließt



  • Und hier nochmal save und portabel.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        // TODO: Code
    
        cin.clear();
        cin.ignore(1000, '\n');
        cin.get();
        return 0;
    }
    


  • Hacker schrieb:

    Außerdem hast du im Beispiel vergessen, cstdlib zu implementieren.

    Findest du es nicht ein bisschen übertrieben, dass er für sein kleines Programm noch cstdlib implementieren soll? 😃



  • Hacker schrieb:

    Wieso? Was er vorschlägt, ist ja, dass man vor dem Compilieren dafür sorgt, dass die Konsole nicht geschlossen wird, hier geht es jetzt eher mehr um das aufrufen aus der Konsole heraus, oder im Explorer, us.

    Deine Formulierung ist einfach Müll. Wie so oft, leider. Versuch doch mal, Sätze zu schreiben, die alle auch im ersten Durchlauf unmissverständlich verstehen.

    Hacker schrieb:

    _matze schrieb:

    Hacker schrieb:

    Bitte kein using namespace std;

    Warum nicht?

    Weil es auch hier unnötig ist. Da wird nicht einmal irgendetwas aus der StandardBibliothek benutzt, also... schlechtes Vorbild 🙄

    Dann schreib das doch gefälligst vernünftig dahin. So sieht es aus, als würdest du generell using namespace verbieten wollen. Das muss dir doch klar sein. 🙄

    Hacker schrieb:

    Bei der main() -funktion?

    Ach so, ok. Ich dachte, du meinst was anderes und drückst dich wieder ungünstig aus. Aber ganz ehrlich, wen stört es denn, wenn man seine main immer mit Parametern notiert?

    Hacker schrieb:

    Und zur cin.get() Abfrage: Dann eben das Teil aus der FAQ, kann jetzt den Link nicht finden...

    Hierbei ist es wichtig sich zu überlegen, warum man überhaupt das Schließen der Konsole verhindern will. Ist es ein Dienst am Benutzer, also soll es so auch im fertigen Programm bestehen bleiben?

    Falls ja, sind Lösungen wie cin.get, getchar und auch system("pause") nicht optimal, selbst wenn sie erst mal funktionieren. Bei getchar & Konsorten würde zumindest das Leeren des Eingabepuffers fehlen (sonst fügst du irgendwann eine Eingabefunktion hinzu und wunderst dich, dass die Konsole nicht mehr offen bleibt). Und system("pause") ist nicht portabel, wie wir alle wissen.

    Falls nicht, ist jegliche Portabilitätsdiskussion bereits hinfällig. Hier wollen wir nur noch das Ergebnis des Programms sehen, bevor sich die Konsole schließt. Und das lässt sich mit get/getchar (+leerer Eingabepuffer), system, STRG+F5 (VS) , mit dem Starten per Konsole oder mit jeder qualitativ gleichwertigen Methode erreichen (und alle genannten halte ich hier für mehr oder weniger gleichwertig). Wenn hier Code geschrieben wird, ist er nicht von Dauer und verschwindet sowieso wieder. Ich persönlich bevorzuge STRG+F5, damit spare ich mit überflüssige Codezeilen.



  • _matze schrieb:

    Ich persönlich bevorzuge STRG+F5, damit spare ich mit überflüssige Codezeilen.

    Das heißt, Du schreibst ein Konsolenprogramm, das bestimmte Dinge erledigt, Output auf die Konsole schreibt, den Du kontrollieren/sehen/überprüfen willst/musst, und wenn Du es dann ausführen willst, startest Du erst Dein Visual Studio, lädst das entsprechende Projekt, und drückst nun STRG F5?

    Klingt ziemlich umständlich ...



  • Belli schrieb:

    _matze schrieb:

    Ich persönlich bevorzuge STRG+F5, damit spare ich mit überflüssige Codezeilen.

    Das heißt, Du schreibst ein Konsolenprogramm, das bestimmte Dinge erledigt, Output auf die Konsole schreibt, den Du kontrollieren/sehen/überprüfen willst/musst, und wenn Du es dann ausführen willst, startest Du erst Dein Visual Studio, lädst das entsprechende Projekt, und drückst nun STRG F5?

    Klingt ziemlich umständlich ...

    Also entweder entwickelt man garde am Programm, dann befindet man sich in der IDE und kann daher auch Strg+F5 drücken. Oder das Programm soll benutzt werden. Dann startet man idealerweise für Konsolenprogramme die Kommandozeile und startet das Programm darin. Wenn das Programm selbstständig pausiert, nur damit die Ausgabe beim Klick in den Explorer lesbar ist, dann ist das meeh. Um sowas zu erreichen gibt es auf gängigen Betriebssystemen Batch-Jobs, wo man nach der Programmausführung pausieren kann...



  • Belli schrieb:

    _matze schrieb:

    Ich persönlich bevorzuge STRG+F5, damit spare ich mit überflüssige Codezeilen.

    Das heißt, Du schreibst ein Konsolenprogramm, das bestimmte Dinge erledigt, Output auf die Konsole schreibt, den Du kontrollieren/sehen/überprüfen willst/musst, und wenn Du es dann ausführen willst, startest Du erst Dein Visual Studio, lädst das entsprechende Projekt, und drückst nun STRG F5?

    Klingt ziemlich umständlich ...

    Natürlich nicht. Das habe ich auch nicht gesagt.



  • TAB-Vervollständigung in der Windows Konsole? Echt? Auch für Unterverzeichnisse?

    cd C:\
    
    cd Users\<TAB>
    

    Wieso bekomme ich da die Unterverzeichnisse von C:\ angezeigt??



  • pyhax schrieb:

    TAB-Vervollständigung in der Windows Konsole? Echt? Auch für Unterverzeichnisse?

    cd C:\
    
    cd Users\<TAB>
    

    Wieso bekomme ich da die Unterverzeichnisse von C:\ angezeigt??

    Welches Windows? Bei mir werden korrekt die Unterordner von c:\users angezeigt.



  • #include <iostream>
    using namespace std;
    
    int main()
    {
    cout<<"QQ"<<endl;
    
    cin.sync(); 
    cin.get(); 
    }
    


  • _matze schrieb:

    Belli schrieb:

    _matze schrieb:

    Ich persönlich bevorzuge STRG+F5, damit spare ich mit überflüssige Codezeilen.

    Das heißt, Du schreibst ein Konsolenprogramm, das bestimmte Dinge erledigt, Output auf die Konsole schreibt, den Du kontrollieren/sehen/überprüfen willst/musst, und wenn Du es dann ausführen willst, startest Du erst Dein Visual Studio, lädst das entsprechende Projekt, und drückst nun STRG F5?

    Klingt ziemlich umständlich ...

    Natürlich nicht. Das habe ich auch nicht gesagt.

    Dann erklär bitte noch einmal GENAU, wie das mit STRG + F5 funktioniert.



  • Was ist denn daran nicht zu verstehen?
    Während du das Programm entwickelst, startest du es mit STRG+F5, damit sich die Konsole nicht schliesst.
    Das fertige Programm wird aus der Konsole gestarten bzw. für die, die damit nicht umgehen können oder lieber aus dem Explorer starten wollen, gibts einen Batch-2-Zeiler, der die Konsole offen hält.



  • Jockelx schrieb:

    Was ist denn daran nicht zu verstehen?
    Während du das Programm entwickelst,

    Es war hier nirgendwo davon die Rede, dass sich die Frage lediglich auf die Entwicklungsphase bezog, oder habe ich das überlesen?



  • Ähm, nein? Deshalb hab ich die Antwort für die Post-Entwicklung auch nochmal extra wiederholt.
    Steht doch da, auch wenn du es nicht mitzitiert hast.



  • Schön, aber meine Frage richtete sich ja nicht an Dich, sondern an _matze, der das Starten via STRG + F5 bevorzugt - und es ging nirgendwo, wie Du bestätigst, (ausdrücklich) um die Entwicklungsphase ...

    Ich selbst bevorzuge eine eigens dafür geöffnete Konsole, insbesondere deshalb, weil es dann problemlos möglich ist, das Programm mit unterschiedlichen Parametern zu starten.



  • Gut, dann soll _matze das beantworten.
    Scheinbar kann ich eh nicht verständlich schreiben oder du nicht richtig lesen.



  • Naja ... eine Möglichkeit wäre, dass _matze seine Konsolenprogramme nach der Entwicklungsphase nicht mehr startet, oder wie würdest Du die Aussage verstehen, dass er das Starten via STRG + F5 bevorzugt?



  • Ja, so ist das.
    _matzes Programme sind leider so langweilig, dass er sie nach der Entwicklung nie wieder öffnen will.
    Jetzt haben wir alles geklärt, zumindest von meiner Seite aus.



  • Dass die STRG+F5 Methode nur für die Entwicklungsphase sinnvoll ist, ist doch mehr als offensichtlich und muss wirklich nicht extra erwähnt werden. 🙄


Anmelden zum Antworten