void oder int?



  • Ok ... ich hatte vorhin das Problem das bei mir die Konsole nicht offen blieb.
    Das Problem hab ich mitlerweile gelöst in dem ich noch getch() eingefügt habe.

    #include <iostream.h>
    #include <conio.h>

    int main(){
    cout << "bla"<<endl;
    getch();
    }

    Ok so funzt alles.
    Aber bei meinem Tutorial steht statt "int main()" "void main()".
    Wenn ich das aber mit void mache dann kann ich des genze nicht kompilieren.
    Im Tutorial ist das Beispiel so:

    #include <iostream.h>
    void main()
    {
    // Dies ist das Hello-World-Programm
    cout<<"Hello, world!"<<endl;
    };

    Aber das lässt sich durch das void nich kompilieren.
    Jetzt fragte ich mich was wohl bei mir anders war als bei dem Knilch der das Tutorial geschrieben hat.
    Nach etwas Überlegen dacht ich so müssts doch gehn:

    #include <iostream.h>
    #include <conio.h>

    void main()
    {
    cout << "Hello World!"<<endl;
    getch();
    return 0;
    }

    ... lässt sich auch nicht kompilieren.
    Irgendwie glaub ich das bei meinem Tutorial was anders ist als bei mir.
    Ich arbeite mir Dev-C++.
    Wenn das jetz nicht mit void geht dann könnte mir jemand ein Tutorial vorschlagen bei dem int benuzt wird.
    Danke schon mal im Voraus

    MfG Mish



  • der alte borland müsst es mit void kompillieren können. jedenfalls tut er das bei meinem nicht standardkonformen freund, und bei deinem ebenfalls nicht standardkonformen prof.



  • Dein Tutorial ist wohl etwas veraltet, so müsste das stimmen:

    #include <iostream>
    #include <conio.h>   //nicht Standard, funktioniert deshalb nicht immer
    
    using namespace std;
    
    int main()
    {
      cout << "Hallo Welt!" << endl;
      getch();
      return 0;
    }
    

    Merke:

    1. iostream statt iostream.h
    2. conio.h ist nicht Standard, das funktioniert z.B. normalerweise nicht unter Unix/Linux.
    3. Namespaces verwenden (using namespace std).
    4. main gibt immer ein int zurück, void main gibt es nicht.


  • void main()
    {
    cout << "Hello World!"<<endl;
    getch();
    return 0;
    }
    

    Das is ganz falsch. Wenn du void benutzt, hat die Funktion keinen Rückgabewert.

    Nach Standard muss es eigentlich ein "int" sein. Also wenn void bei dir nichzt kompiliert wird( Rotz Dev C++ ^^ ) dann mach aus dem void ein int und ans Ende das return 0;

    das hier

    int main(){
    cout << "bla"<<endl;
    getch();
    }
    

    ist auch mit vorsicht zu geniesen. Ich weis Dev macht das ohne ne Warnung(kann man evtl wo einschalten). Aber wenn deine Funktion einen Rückgabewert haben soll, dann gib auch selber einen zurück und lass nicht die Entwicklungsumgebung irgendwas da machen.
    also fein das "return 0;" ans Ende wie schon oben gesagt



  • @mish
    lies dir mal die faq durch. alles. das bringts. ehrlich.

    Pellaeon schrieb:

    gib auch selber einen zurück und lass nicht die Entwicklungsumgebung irgendwas da machen.

    die entwicklungsumgebung macht da garnichts. 🙄



  • Der Standard definiert auch, dass int main kein explizites return braucht. Wenn es nicht da steht, wird 0 angenommen. Mir nicht ganz klar, warum man das so gemacht hat (Kompatibilität zum rausgeworfenen void main?), aber naja, wenn's der Standard denn so sagt...



  • Was der DevC++ macht oder nicht kommt immer auf die Version des verwendeten Compilers an. Meistens wird das der MingW32 sein, also eine gcc-Version. Und die neueren Versionen sind im großen und ganzen standardkonform, mit der Compileroption -Wall kann man außerdem alle Warnungen einschalten, die sonst nicht kommen.
    Übrigens ist das weglassen von return 0; imho standardkonform. Bei main braucht man es nicht, dann wird automatisch angenommen, dass kein besonderer Fehler aufgetreten ist und somit der Code 0 zurückgegeben wird.
    geloescht


Anmelden zum Antworten