Was ist sinnvoll für einen Rückgabewert. Brauche jeweils einen für erfolgreich abgearbeitet sowie vorzeitig abgebrochen. Sicherlich kann ich nun return 1 oder 0 machen, nur was ist so das gängige Verfahren? return 1 // wenn ausgeführt wurde return 0 // wenn es abgebrochen wurde ?
Meistens nimmt man negative Werte für Fehler und 0 für OK. Kannst du aber halten wie du willst. Vielleicht willst du aber auch noch unterscheiden, wo der Fehler passiert ist, oder Fehlerklassen (z.B. tolerant weitermachen oder ganze Aktion abbrechen). Wenn du z.B. int als Rückgabetyp nimmst, kannst du damit ja schon eine ganze Menge "kodieren".
Nimm einen enum. Der lässt sich dann beliebig erweitern, falls zukünftig weitere statuscodes zurückgegeben werden, z.B. Pausiert
Danke. Umfangreiche Fehlercodes gibt es nicht. Es gibt nur die Unterscheidung, ob Wert kleiner oder größer ist als der gewünschte Bereich. -2 // Wert unterschritten -1 // Wert überschritten 0 // Wert iO reicht hier aus.
1 | typedef enum vorgang |
2 | {
|
3 | erfolgreich, // entspricht 0 |
4 | unterschritten, |
5 | ueberschritten
|
6 | // moegliche Erweiterungen
|
7 | }vorgang_t; |
Klingt für mich übersichtlich und man muss nicht raten bzw zusätzlich kommentieren, warum jetzt die Funktion X auf -2 abgefragt wurde.
Wenn Du in C programmierst und wirklich nur OK und Fehler zurückgeben willst, verwendest Du 0 für Fehler und 1 für OK. Beispiel:
1 | int funktionErfolgreich() { |
2 | ...
|
3 | return 1; |
4 | }
|
5 | |
6 | if (funktionErfolgreich()) { |
7 | ...
|
8 | }
|
9 | |
10 | ...
|
11 | if (!funktionErfolgreich()) { |
12 | ...
|
13 | }
|
Auf diese Art sparst Du dir die Vergleichsoperation.
1 | if (funktionErfolgreich() == 1) { |
Liest sich nicht so flüssig. Alternativ (also in Deinem Fall) kann man auch sehr gut ENUM verwenden.
1 | if (torSchliessen() == TOR_GESCHLOSSEN) { |
2 | |
3 | }
|
4 | ...
|
5 | if (torSchliessen() == TOR_KLEMMT) { |
6 | |
7 | }
|
Nimm sinnvolle Namen. Dann ist der Code auch flüssig lesbar. Auch fallen Tippfehler schneller auf.
1 | if (funktion() == -3) { ... |
Ist so weit korrekt - auch wenn -3 nicht als Rückgabe existiert. "TOR_KEMT" wird Dir aber gnadenlos um die Ohnen gehauen.
:
Bearbeitet durch User
Christian H. schrieb:
> verwendest Du 0 für Fehler und 1 für OK.
sag bitte, dass das ein Tippfehler war.
eagle user schrieb: >> verwendest Du 0 für Fehler und 1 für OK. > > sag bitte, dass das ein Tippfehler war. Tja....da gibt es zwei Philosophien mit jeweils negierter Logik.
Walter Tarpan schrieb: > eagle user schrieb: >>> verwendest Du 0 für Fehler und 1 für OK. >> >> sag bitte, dass das ein Tippfehler war. > > Tja....da gibt es zwei Philosophien mit jeweils negierter Logik. da können wir ja froh sein, dass Computer nur 0 und 1 kennen. oh, Moment... FunFact: unter VMS gilt: 1 = OK, 2,4,6... = Fehler, 0 = undefiniert :)
Mehrle schrieb: > Danke. > Umfangreiche Fehlercodes gibt es nicht. Es gibt nur die Unterscheidung, > ob Wert kleiner oder größer ist als der gewünschte Bereich. > -2 // Wert unterschritten > -1 // Wert überschritten > 0 // Wert iO > > reicht hier aus. Dann kannst du auch -1 // Wert unterschritten 0 // Wert iO +1 // Wert überschritten nehmen. Ist evtl. intuitiver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.