c++ Newbie



  • Also ich bin ein totaler newbie und hab den Dev-C++ compiler.
    In meinem buch steht dieser Quelltext:

    #include <iostream.h>

    int main()
    {
    cout << "Hello World!\n";
    return 0;
    }

    wenn ich ihn jedoch compilieren will funktioniert es nicht könnt ihr mir bitte helfen?



  • Vielleicht sollte man im Forum mal alle Beiträge mit iostream.h rot markieren... 🙄

    #include <iostream>
    
    using namespace ::std;
    
    int main()
    {
        cout << "Hello World" << std::endl;
    }
    

    mfg

    PS: Dev-Cpp ist kein Compiler; iostream.h ist veraltet ⚠



  • Hallo,

    IMHO ist es so korrekt:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout << "Hello World" << endl;
        return 0;
    }
    

    @public enemy: Warum haben Sie das return ausgelassen? AFAIK wird es von ISO C++ gefordert! 😕

    Mit freundlichen Grüßen

    ISO-C++-Verfechter



  • Soweit ich das weiss, schreibt ISO-C++ kein return von main vor.
    mfg



  • return 0;
    

    ist nicht notwendig, da es automatisch ergänzt wird.
    INTERNATIONAL STANDARD ISO/IEC 14882 First edition 1998-09-01
    3.6 Start and termination, 3.6.1 Main function, Absatz 5.



  • Wobei ich finde, dass man sich diese Ausnahme der Regel nicht angewöhnen sollte. Eine Funktion, die etwas zurückgibt, sollte auch mindestens eine return Anweisung haben, egal ob sie nun foo oder main heisst.



  • Erhard Henkes schrieb:

    return 0;
    

    ist nicht notwendig, da es automatisch ergänzt wird.
    INTERNATIONAL STANDARD ISO/IEC 14882 First edition 1998-09-01
    3.6 Start and termination, 3.6.1 Main function, Absatz 5:[...]

    Also wenn ich bei mir irgendwo in einerFunktion (außer void-Funktionen) das return rausnehme, regt sich mein Compiler tierisch auf... hab ebenfalls den Bloodshed Dev-C++ 4.9.9.0. Aber es ist zu empfehlen noch eine Funktion aufzurufen, die auf ENTER wartet, da sich sonst das Fenster sofort wieder schließt, hier mal das Standard-Hello-World-Projekt vom Dev-C++ 4.9.9.0:

    #include <iostream>
    
    using namespace std;
    
    int main (int argc, char *argv[])
    {
      cout << "Hello World!" << endl;
      cout << "Press ENTER to continue..." << endl; 
      cin.get();
      return 0;
    }
    

    Was wir hier sehen ist die Zeile "cin.get();" - sie wartet auf ein ENTER und schon gehts wieder raus... ist überall zu empfehlen, wo du Ausgaben machst, die man auch lesen soll, denn sonst wunderst du dich, warum er es nicht anzeigt, obwohl er es getan hat. Außerdem fällt auf, dass die main()-Funktion Parameter bekommt, der erste enthällt die Anzahl der Zeichen der Parameter an das Programm und der zweite enthällt die Parameter an das Programm. Es gibt zwar auch eine main()-Funktion ohne Parameter, die gibt aber nichts zurück, also da kannst du das return rausnehmen... allerdings ist die dann vom Typ void. Und wenn du ein return machst, schreib nur return; hin, da sie nichts zurück gibt. Damit beendest du die Funktion dann.



  • @windalf

    wir reden von der main-funkton:

    return 0 kann bei der main funktion, also der einsprungsfunktion laut standard weggelassen werden (lies einfach den standard 😉 )

    ein compiler, der da einen fehler wirft, muss in den müll.

    ein compiler, der da eine warnung bringt.. na ja, da leben wir mit, und hoffen, daß er in der nächsten version standard konform ist.

    bestes beispiel: das visual studio 6 mit seinem compiler, aber gut, das ist in mehreren punkten nicht standard konform.



  • Tja, das macht der Dev-C++ 4.9.9.0 aber... er meldet, dass er das nicht compilieren kann 😃 und ich schmeiße ihn trotzdem nicht weg...



  • klar.. ich nehme den müll offiziell zurück 😉

    sonst müsste ich hier auch einige meiner liebgewonnenen alten compiler entsorgen und würde tränen weinen ...

    hier nochmal ein wenig hume
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=main#Answ



  • @Windoof: Was schreibst du da für einen Kram? Bitte korrigieren. 😉



  • ich kenn den devcpp nicht, aber gewundert hat es mich schon, denn da muss doch ein aktueller gcc drunter sein? aber wie gesagt, ich habe ihn hier nicht.
    vielleicht meinte windoof nicht die einsprungsfunktion, soll er nochmal lesen.


Anmelden zum Antworten