void-Rückgabe. Im Code trotzdem 'return'?
-
Hallo
Habe hier ein Codefragment, dessen Inhalt mir nicht wirklich bekannt ist.
void MyClass::OnQuit() { if(MessageBox("", close?, MB_YESNO)==IDNO) { return ; } CDialog::OnCancel(); }
Weshalb ist die return-Anweisung hier trotzdem zulässig und was bewirkt es? Hat wohl kaum etwas mit Rekursivität zu tun, oder? oder ists einfach ein schlechter Programmierstil? ... Das Project liess sich jedenfalls bei mir ohne Fehler & Warnungen einwandrei kompilieren/ausführen.
Wäre froh wenn mir jemand eine rasche Antwort geben könnte.
-
Funktion wird sofort beendet, sonst nix.
-
sky21 schrieb:
Weshalb ist die return-Anweisung hier trotzdem zulässig
Weil die return Anweisung in jeder Funktion zulässig ist.
sky21 schrieb:
und was bewirkt es?
Das was DDR-RAM schrieb.
sky21 schrieb:
Hat wohl kaum etwas mit Rekursivität zu tun, oder?
Das ist richtig.
sky21 schrieb:
oder ists einfach ein schlechter Programmierstil?
Geschmackssache. Wenn es die vollständige Funktion ist, die du gepostet hast, dann schreibt man üblicherweise eher sowas
void MyClass::OnQuit() { if(MessageBox("", "close?", MB_YESNO) != IDNO) CDialog::OnCancel(); }
-
groovemaster schrieb:
sky21 schrieb:
Weshalb ist die return-Anweisung hier trotzdem zulässig
Weil die return Anweisung in jeder Funktion zulässig ist.
Ah okay. Habe ich eben nie so gesehen, gelesen und gelernt, dass void funktionen auch mittels return anweisungen beendet werden können. Thanks man.