-
Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...
Autor: Granini 04.03.14 - 19:48
thomas001le schrieb:
--------------------------------------------------------------------------------
> Wie willst du sonst sowas machen, außer mit goto in C:
>
> {
> if(!good) goto cleanup;
> ..
> if(!good2) goto cleanup;
> ..
> cleanup:
> long_cleanup_code();
> }
Ich hätte C++ verwendet. Aber gut, bleiben wir mal bei C.
Mit Goto sieht es so aus:
doSomething()
{
if(!good1) goto cleanup;
..
if(!good2) goto cleanup;
..
cleanup:
long_cleanup_code();
}
Was spricht dagegen es so zu machen?:
doSomething()
{
if(!good1) return;
..
if(!good2) return;
..
}
Und dort wo doSomething aufgerufen wird:
doMore()
{
doSomething();
cleanUp();
}
Nirgendwo sonst wird doSomething direkt aufgerufen (außer an der einen Stelle).
Es wird nur doMore benutzt. -
Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...
Autor: aha47 04.03.14 - 21:20
M.P. schrieb:
--------------------------------------------------------------------------------
> Die neue Schule ist ein try / catch mit einem throw ... an der Stelle, wo
> jetzt das goto steht ;-)
>
> Das ist dann wieder die "reine Informatiker-Schule"
Öhm, nein, definitiv nicht.
http://c2.com/cgi/wiki?DontUseExceptionsForFlowControl -
Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...
Autor: zampata 05.03.14 - 01:43
angeblich:
[quote]
The -Wunreachable-code has been removed, because it was unstable: it
relied on the optimizer, and so different versions of gcc would warn
about different code. The compiler still accepts and ignores the
command line option so that existing Makefiles are not broken. In some
future release the option will be removed entirely.
[/quote]
Leider gibt es keine Begründung für das entfernen der Option; nur eine Bestätigung dass dies Erfolgen wird.
http://gcc.gnu.org/ml/gcc-help/2011-05/msg00360.html -
Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...
Autor: tendenzrot 05.03.14 - 09:23
Auf gar keinen Fall. "Single Point of Return" und wenn ich dafür ein Goto verwenden müsste.
-
Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...
Autor: M.P. 05.03.14 - 10:17
Wobei der Codeschnipsel aus dem Artikel schon sehr nach Fehlerbehandlung aussieht...
OT:
Ich habe mal Code gesehen, wo bei einem Kommunikationsstack eine Art Lern-Prozedur für die auftretenden maximalen Puffer-Größen bei jedem Auftreten einer Pufferüberschreitung eine Exception geschmissen hat, die dann im Catch einen größeren Puffer allozierte.
Hatte den Code von einem Kollegen zur Pflege geerbt, und war beim Ausprobieren des Codes erstmal für einen Vormittag auf der falschen Fährte, weil ich das für einen Fehler hielt...