hilfe beim ersten programm plzzzz



  • hi leute schaut euch bitte mal diesen läppischen code an ...

    http://img214.imageshack.us/img214/3087/forumif.jpg

    beim mir geht er und bei einer freundin net ... woran kann das denn liegen ?

    danke schonmal für die antworten
    mfg Metallicaan



  • a) Freundin hat wahrscheinlich keine CRT installiert.
    b) Lösung bspw: CRT statisch linken
    c) DevCpp ohje...hol dir besser VC++ 2010 Express

    Sollte das nicht das Problem sein, wären natürlich FEHLERMELDUNGEN wichtig.

    MfG SideWinder


  • Mod

    Weil das using namspace in den globalen Dateibereich gehört. Und das sollte dir der Compiler auch ziemlich eindeutig sagen in der Fehlermeldung die du nie gelesen hast. außerdem hat dein Code mit dem system("pause") ein weiteres gravierendens Portabilitätsproblem, weil auf dem Zielsystem ein Programm namens pause verfügbar sein muss.

    Und zu Dev C++ gibt#s hier glaube ich auch noch einen wichtigen FAQ-Eintrag, den ich mal eben suchen werde.
    edit: Hier:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-237002.html



  • kannst du bitte deinen lösungsvorschlag etwas detailierter dastellen ...bin etz net so der ultrahex0r
    und die fehlermeldungen sieht man doch auf dem bild ...
    bei java kenn ich mich minimal besser aus und da muss man doch die eine path variable definieren ... muss man sowas bei c++ auch machen ? weil in dem einen videotutorial was ich gemacht hab stand nur dass man dev c++ installen soll und es kann los gehen

    und meinst du das prob könnte mit der anderen entwicklungsumgebung gelöst werden ? oder fehlt das was du erwähnt hast net trotzdem ?



  • und erstmal noch danke für die schnellen beiträge bleibt bitte noch kurz bei mir ^^

    kannst du dann vielleicht ein code beispiel posten was dann die von dir gennannten fehler nicht enthällt ?

    wäre echt nice ... :-]



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

    Definieren musst du nix weiter.
    Da oben ging ich jetzt mal von einem aktuellem Standardcompiler und Windows aus. 😃
    Denke aber mal, es liegt nur an der falschen Position des Namespace, wie SeppJ bereits sagte 😉



  • #include <cstdlib> //system(..)
    #include <iostream> //cout + endl
    
    int main()
    {
      using namespace std; //ist vollkommen in ordnung hier
    
      cout << "hallo" << endl;
      system("pause"); //nicht der tollste weg, die konsole offen zu halten - siehe dazu auch die faq...
    
      //return 0; - brauchst du in der main-fkt nicht
    }
    

    bb

    PS: Kann max. sein, dass DevC++ nicht mit der using-direktive auf scope-ebene zurecht kam - aber normaleriwese ist das durchaus üblich.



  • return 0; ist nicht zwingend notwendig, aber doch "elegenter", wenn man main bereits mit Rückgabewert "int" deklariert...



  • curious_husky schrieb:

    return 0; ist nicht zwingend notwendig, aber doch "elegenter", wenn man main bereits mit Rückgabewert "int" deklariert...

    wassn gelaber...



  • unskilled schrieb:

    curious_husky schrieb:

    return 0; ist nicht zwingend notwendig, aber doch "elegenter", wenn man main bereits mit Rückgabewert "int" deklariert...

    wassn gelaber...

    😃

    @metallicaan: Zum Thema "CRT statisch linken" (das ist dein Problem, falls auf dem Zielrechner deine Release-exe Fehler wie "Anwendungskonfiguration nicht korrekt" oder was ähnliches erzeugt) gibt es hier einen schönen Link, der alle Unklarheiten beseitigen dürfte:

    http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/

    Ansonsten wäre eine Fehlerbeschreibung natürlich hilfreich, wie schon gesagt wurde.

    EDIT: Ach ja, ich hätte schon mal einen Blick auf dein Bild werfen können. Notitz für mich: erst alles lesen, dann antworten... 🤡



  • curious_husky schrieb:

    return 0; ist nicht zwingend notwendig, aber doch "elegenter", wenn man main bereits mit Rückgabewert "int" deklariert...

    Das hat nichts mit eleganter zu tun, sondern nach C++ Standart muss ein int zurückgegeben werden. Bei C war void völlig in Ordnung, bei C++ nicht.

    Mir wäre allerdings neu, wenn ein using global sein muss. AFAIK darf dies durchaus lokal erfolgen.



  • inter2k3 schrieb:

    curious_husky schrieb:

    return 0; ist nicht zwingend notwendig, aber doch "elegenter", wenn man main bereits mit Rückgabewert "int" deklariert...

    Das hat nichts mit eleganter zu tun, sondern nach C++ stan**** muss ein int zurückgegeben werden. Bei C war void völlig in Ordnung, bei C++ nicht.

    Mir wäre allerdings neu, wenn ein using global sein muss. AFAIK darf dies durchaus lokal erfolgen.

    Ich dachte nach C++ Standard muss nicht explizit ein return in main() gemacht werden. Dachte immer das es hier eine Ausnahme gibt.



  • inter2k3 schrieb:

    curious_husky schrieb:

    return 0; ist nicht zwingend notwendig, aber doch "elegenter", wenn man main bereits mit Rückgabewert "int" deklariert...

    Das hat nichts mit eleganter zu tun, sondern nach C++ stan**** muss ein int zurückgegeben werden. Bei C war void völlig in Ordnung, bei C++ nicht.

    Mir wäre allerdings neu, wenn ein using global sein muss. AFAIK darf dies durchaus lokal erfolgen.

    Er meinte nicht, dass int als Rückgabewert eleganter ist, sondern das "return 0" am Ende. Ich kann da aber keinen Eleganz-Mehrwert ausmachen... 😉

    P.S.: Du weißt schon, wie man Standard schreibt? 😃


  • Mod

    ReturnPflicht schrieb:

    Ich dachte nach C++ Standard muss nicht explizit ein return in main() gemacht werden. Dachte immer das es hier eine Ausnahme gibt.

    Korrekt:

    C++ Standard 3.6.1,5 schrieb:

    A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling std::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;

    `



  • Gnarf - genauer lesen hilft manchmal. Habe übersehen, dass sich die Aussage nur auf das return-statement bezieht und nicht auf den return-Typ des function-headers. 😃



  • inter2k3 schrieb:

    Mir wäre allerdings neu, wenn ein using global sein muss. AFAIK darf dies durchaus lokal erfolgen.

    Stimmt. Macht ja auch nur Sinn, wenn es verschiedene Namespaces gibt. Hab ich vergessen, sry. 😕

    _matze schrieb:

    Er meinte nicht, dass int als Rückgabewert eleganter ist, sondern das "return 0" am Ende. Ich kann da aber keinen Eleganz-Mehrwert ausmachen... 😉

    Genau das mein ich 🙂 (Ich glaub ich muss lernen mich besser zu artikulieren 😃 )
    Einen Mehrwert erschliesse ich mir damit auch nicht, aber mein Lehrer hat das gesagt xD. Und wenn von der Logik und Funktion nichts dagegenspricht... 😉


  • Mod

    curious_husky schrieb:

    inter2k3 schrieb:

    Mir wäre allerdings neu, wenn ein using global sein muss. AFAIK darf dies durchaus lokal erfolgen.

    Stimmt. Macht ja auch nur Sinn, wenn es verschiedene Namespaces gibt. Hab ich vergessen, sry. 😕

    Ich habe mal nachgeschlagen: Erlaubt ist es in anderen Namespaces (logisch), im Blockscope (also in Funktionen), global (auch logisch), aber nicht in Klassendeklarationen.



  • curious_husky schrieb:

    _matze schrieb:

    Er meinte nicht, dass int als Rückgabewert eleganter ist, sondern das "return 0" am Ende. Ich kann da aber keinen Eleganz-Mehrwert ausmachen... 😉

    Genau das mein ich 🙂 (Ich glaub ich muss lernen mich besser zu artikulieren 😃 )
    Einen Mehrwert erschliesse ich mir damit auch nicht, aber mein Lehrer hat das gesagt xD. Und wenn von der Logik und Funktion nichts dagegenspricht... 😉

    das hat noch lang nichts mit eleganz zu tun. dafür aber sehr wohl etwas mit überflüssigkeit...

    int main()
    {}
    

    ist nun mal definiertes C++.
    Wenn dir so sein sollte, kannst du das return 0 oder was auch immer auch mit reinschreiben - das macht es aber nicht zu besserem C++.

    bb



  • Wie kann man eigentlich jahrelang über die Signatur von main labern?

    Zum Glück bin ich auf C# umgestiegen, da gibt es wenigstens Fortschritte.


Anmelden zum Antworten