Hello-World "Programm" - Wo ist der Fehler?



  • @freshman

    IdR baut der Compiler bei der main nen return ein wenn es nicht explizit angegeben wurde. Das nennt sich dann implizites return.



  • Danke, einen Fehler findet der Compiler dort nicht mehr.

    Aber wie kann ich das Programm denn jetzt öffnen?
    Wenn ich auf die exe-Datei klicke, öffnet sich eine DOS-Box und verschwindet sofort wieder.

    Verzeiht mir bitte für diese Newbie-Frage,
    aber hat jemand eine Antwort?



  • @prolog: thanx'
    (aber standard!=idR!=immer und außerdem erlkönig.isBigFreshman()) 😉



  • freshman schrieb:

    @ponto: najanajanaja... dann doch wohl eher so: wenn schon int main, dann aber auch mind. ein return 😉

    #include <iostream>
    int main()
    {
      // Hello World
      std::cout << "Hello, world!" << std::endl;
    
      return 0;
    }
    

    Najanajanaja ... Zitieren wir mal den Standard 3.6.1.5:

    A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing

    return 0;
    

    Wir sagen auch nicht "wenn schon int main", sondern wir schreiben immer "int main".



  • @erlkönig: david_14 hat doch schonmal etwas vorgeschlagen: laß dein Prog noch eine dummy-Eingabe erwarten
    @ponto: immer int main ist sehr richtig 👍 daß return 0 'default' ist wußte ich echt nicht, sorry. schön etwas zu lernen. Ich dachte nur, da erlkönig ein ziemlicher Frischling ist....



  • erlkoenig schrieb:

    Danke, einen Fehler findet der Compiler dort nicht mehr.

    Aber wie kann ich das Programm denn jetzt öffnen?
    Wenn ich auf die exe-Datei klicke, öffnet sich eine DOS-Box und verschwindet sofort wieder.

    Starte das Programm aus der Shell heraus. "cmd" oder "command" je nach Windowsversion. Ich gehe mal davon aus, dass du Windows benutzt.



  • @Freshman: Und wie macht man das?



  • Ich benutze Win XP.

    Du meinst "Ausführen", oder?

    Wie müsste die entsprechende Zeile denn dann lauten?



  • unter windowsXp: start->programme->zubehör->eingabeaufforderung
    da gibst du dann die auszuführende datei inklusive dateipfad an.
    fertig.
    alternativ gehst du auf ausführen und gibst da cmd ein,dann wieder dateiname mit vollständigem dateipfad und fertig



  • 1. Dein Programm aus dem Compiler heraus starten, die fügen meistens noch ein "Press any key to continue" ans Ende dran.

    2. Wie gesagt aus der Eingabeaufforderung heraus starten.

    3. Dummy-Eingabe erwarten (Siehe Konsolen-FAQ "Automatisches Schließen verhindern")

    NICHT IM RELEASE: system("pause"); vor return aufrufen!

    MfG SideWinder



  • Ich habe es mal so versucht:

    Ausführen --> cmd c://helloworld.exe

    Der Einfachheit halber habe ich die Datei direkt in Laufwerk c gelegt.
    Aber da klappt irgend etwas immer noch nicht ...



  • Danke@SideWinder, aus dem Compiler klappt es!



  • aus der cmd.exe heraus mit C:\helloworld.exe 😉



  • Wenn die Datei in C:\ liegt und du "cmd" ausführst dann reicht auch bloß "HelloWorld.exe" :p

    Ich empfehle für Release-Versionen trotzdem die Konsolen-FAQ mit "Automatisches Schließen verhindern" 🙂

    MfG SideWinder



  • @ponto: apropos return (s.o.) so eine warning ist aber nicht sehr schön:
    warning C4508: 'main' : function should return a value; 'void' return type assumed



  • Veralteter Compiler würde ich sagen...



  • bitte nicht schlagen: using M$VisualStudio6.0 👎



  • freshman schrieb:

    bitte nicht schlagen: using M$VisualStudio6.0 👎

    VC6 ist genauso wie g++ 2.95.x nicht als C++ Compiler zu betrachten.



  • MSVC7 ist wesentlich besser, aber auch mit dem MSVC6 kann man imho leben. So veraltet ist er dann auch wieder nicht.

    BTW: Für diese Warnung gibts dann halt einen Header:

    Edit: Noch schnell einen Fehler eingefügt damit das Programm abstürzt und nicht irgendjemand auf die Idee kommt den hier wirklich zu benützen :p

    // ShutUp.h
    #ifndef STFU_H
    #define STFU_H
    
    class STFU
    {
        STFU()
        {
             cout << "Don't matter about errors, STFU-PlugIn was running during compilation!" << endl;
    
             // Dreht auch alle Runtime-Warnungen die aus euren Programmen kommen ab, es kommt nur noch ein Fenster von Windows, wenn ihr mir 20€ bezahlt bekommt ihr die Version ohne Fenster von Windows
             int* ptr = 0;
             *ptr = 342;
             delete ptr;
             ptr = 0x00000005;
             *ptr = 342;
             delete ptr;
        }
    };
    
    STFU print_msg;
    
    // Hier erstmal alle Warnungen ausschalten
    #pragma warning (disable: xxxx)
    
    #endif
    
    // main.cpp
    #include "ShutUp.h"
    
    int main ()
    {
        //JEtzt auch im MSVC ohne Probleme übersetzbar :-)
        //return(0);
    }
    

    🤡

    MfG SideWinder



  • ich glaub ihr verwirrt den erlkoenig mehr als ihr im helft 😃


Anmelden zum Antworten