Main-Fkt. ignoriert return/exit-Befehle !



  • LaberNich schrieb:

    D.h., die Main-Funktion ignoriert den return-Befehl am Ende, oder auch ein exit, wenn ich das da hinschreibe.

    Wenn Du am Ende von main ein return machst, passiert auch nichts anderes als wenn das Programm "aus eigener Kraft" ausläuft. Was erwartest Du von diesem "Abbruch"?



  • LordJaxom schrieb:

    LaberNich schrieb:

    D.h., die Main-Funktion ignoriert den return-Befehl am Ende, oder auch ein exit, wenn ich das da hinschreibe.

    Wenn Du am Ende von main ein return machst, passiert auch nichts anderes als wenn das Programm "aus eigener Kraft" ausläuft. Was erwartest Du von diesem "Abbruch"?

    seiner beschreibung nach beendet sich das programm gar nicht. es idled rum, als wäre am ende 'ne endlosschleife. aber vielleicht hab' ichs auch falsch verstanden.
    🙂



  • LordJaxom schrieb:

    LaberNich schrieb:

    D.h., die Main-Funktion ignoriert den return-Befehl am Ende, oder auch ein exit, wenn ich das da hinschreibe.

    Wenn Du am Ende von main ein return machst, passiert auch nichts anderes als wenn das Programm "aus eigener Kraft" ausläuft. Was erwartest Du von diesem "Abbruch"?

    Ja, ist aber wahrscheinlich doch so, daß er den Returnstack zerlegt. Er könnte dann aber mit testweise eingestreuten returns herauskriegen, wann und wo das passiert.



  • wie wäre es mit einem Debugger, Breakpoint bei return bzw. exit setzen und gucken, was passiert. Es könnte auch ein Terminal Problem sein, der sich einfach nicht schließt.



  • Fricky hat's richtig verstanden, verhält sich so, als wäre am Ende eine Endlosschleife, wobei da natürlich keine ist. 🙂

    Return muss ans Ende vonner Main-Fkt, weiß nicht was Du meinst, LordJaxom...

    Habe mit eingestreuten Returns zumindest ne Stelle gefunden, bis zu der es geht, und danach dann nicht mehr. Allerdings passiert da eigentlich nichts...

    Was heißt "Returnstack zerlegt" ?

    OK, danke schonmal und wieder im Voraus, hier bzgl meiner neuen Fragen 🙂



  • LaberNich schrieb:

    Was heißt "Returnstack zerlegt" ?

    die main-funktion wird von 'nem startup-code aufgerufen, der z.b. globale und statische variablen initialisiert und dann in die 'main' springt. wenn 'main' zurückkehrt, geht die kontrolle wieder an den startup-code, der dann eventuell ein paar aufräumarbeiten macht und das programm beendet. die rücksprungadresse zum startup-code, muss irgendwo gespeichert sein, damit alles so klappt wie vorgesehen. wird dieser speicher versehentlich überschrieben, dann springt 'main' am ende (oder durch ein 'return') wo ganz anders hin. in deinem fall äussert sich das als endlosschleife bzw. endloser wartezustand.
    🙂



  • Hmm... klingt irgendwie abgefahren 🙂
    Und was / wie kann man da machen ?



  • LaberNich schrieb:

    Und was / wie kann man da machen ?

    du musst den bug in deinem code beseitigen. was anderes ist nicht sinnvoll.
    🙂



  • LaberNich schrieb:

    Und was / wie kann man da machen ?

    Supertux hat schon das Stichwort Debugger genannt. Oder Du verschlankst Deinen Code auf etwa 50 Zeilen, bei dem das Problem noch auftritt und postest ihn hier.
    Meistens tritt schon beim Verschlanken bereits der Hirnpatsch- Effekt ein. 😃



  • Ja wenn das so einfach wäre .. 😃

    Verschlanken ist leider nicht drin,
    ich vermute, das Problem liegt irgendwo bei CPLEX. 715 Code-Zeilen sind etwas happig für hier, wa? ;o)



  • LaberNich schrieb:

    Ja wenn das so einfach wäre .. 😃 Verschlanken ist leider nicht drin, ich vermute, das Problem liegt irgendwo bei CPLEX. 715 Code-Zeilen sind etwas happig für hier, wa? ;o)

    Du willst, daß wir Dir helfen und uns nicht versklaven, also bis 100+ schauen die Gutmütigsten noch was an, ich nimmer. 😉
    Was spricht gegen einen Debugger?
    Verschlanken geht immer, Du mußt ohne Debugger Deinen Code sowieso zerlegen. Wenn Du einfach Übersichtsweise rausziehst, wo das return noch klappt und wo nicht mehr, geht vielleicht doch noch was.


Anmelden zum Antworten