Problem mit der Funktion "tolower" aus ctype.h
-
Bashar schrieb:
Aber auch nur, wenn die Ausführung tatsächlich das Ende der Funktion erreicht. In dem Beispiel mag das ja so sein, aber im Allgemeinen ist das gar nicht möglich, das zu erkennen.
Da sind wir uns völlig einig. Aber ich sagte ja: "Ich hingegen sehe es als Bug an, wenn man in einer Funktion mit Rückgabewert int kein
return-Statement haben muss." Und da hat es einreturn. Sobald einreturnoderthrowin der Funktion vorkommt, kompiliert der Code auch unter VS. Hingegen kann eine Funktion, die immer eine Exception wirft, ruhigvoidals Rückgabetyp haben.Falls man doch dem Fall begegnet, in dem man unbedingt einen Rückgabetyp ohne Rückgabewert haben muss, kann man den Fehler immer noch zu einer Warnung umwandeln. Das finde ich um einiges sinnvoller, als in 99% der Fälle Programmfehler kompilieren zu lassen.
-
Nexus schrieb:
Aber ich sagte ja: "Ich hingegen sehe es als Bug an, wenn man in einer Funktion mit Rückgabewert int kein
return-Statement haben muss." Und da hat es einreturn.In einer Verzweigung ja, in der anderen nicht. Wenn dich stört, dass g immer wirft, kannst du das Beispiel beliebig komplizierter machen, z. B. als nächste Stufe
bool p(); // gibt abwechelnd true und false zurück void g(); int f() { if (p()) return 0; else g(); // kein return? ja, aber ... s.u. } void g() { if(p()) throw 1; }
-
Hast du meinen letzten Beitrag noch gesehen? Ich glaube nämlich, da bin ich auf diese Fälle mehr oder weniger eingegangen.
