Diverse Fragen (Style)
-
Zu 2: Das ist tatsächlich unschön, aus den genannten Gründen. Man kann in deinem Beispiel nicht unterscheiden, ob die Grenze nun 0 ist oder ob ein Fehler aufgetreten ist. Es wird manchmal trotzdem gemacht, vor allem bei älteren Funktionen aus der Standardbibliothek, die man sich nicht unbedingt zum Vorbild nehmen sollte.
Mögliche Abhilfen in diesem Fall:
-Funktionsergebnis über Funktionsparameter zurück geben und Fehlercode als Rückgabewert der Funktion
-Globaler Fehlerindikator, wie errno.
-sich mit longjmp so etwas wie die Exceptions aus anderen Sprachen selber programmieren
-
Also tatsächlich gilt das, sehr interessant!
Die Alternativen überraschen mich allerdings etwas, nur um das jetzt richtig verstanden zu haben:
Vorzuziehen wäre in diesem Fall also solch eine Konstruktion:
int friendOf(int param, int* result) { // Success *result = friendValue; return 1; // failure return 0; } // main if (friendOf(i, &result)) { printf("%d is friend of %d\n", i, result); }
Finde ich überraschend und entgeht auch meiner Intuition, aber da ich auf keine wirkliche Programmier-Erfahrung zurückblicken kann, bin ich durchaus gewillt es zu glauben
Die Sache mit dem Exceptions nachbauen wäre wohl für Snippets ein overkill. Findet das denn sonst bei euch Verwendung?
-
Krieg ich hier noch ein abschließendes Fazit bitte?
Ich würd sehr gerne wissen ob ich richtig verstanden habe, wie der bevorzugte Weg auszusehen hat!
-
Immer sachte mit deinen Ansprüchen.
Du willst eine Druckbetankung als Extrakt der dir hier gegebenen Antworten angereichert mit allen Erfahrungen langjähriger Praktiker und vielleicht noch vollständige Auflistungen aus der Standardbibliothek, wo und warum es dort anders gemacht wird?
Was zahlst du?
-
Ich hätte ehrlich gesagt eine abschließende Meinung zu der konkreten, genannten Thematik.
Ich brauche keine Auflistung irgendwelcher Standardfunktionen mit Erklärung.
SeppJ hatte hier auf mein konkretes Beispiel reagiert und bessere Alternativen genannt - ich würde jetzt nur noch gerne wissen ob diese richtig verstanden habe.
Ich weiß jetzt leider nicht, was dich zu deinem Beitrag bewegt hat, aber ich hoffe mal, dass es ehrliches Missverständnis wär.
-
Ja, dein Beispiel entspricht einer der drei genannten Methoden.
-
SeppJ schrieb:
Ja, dein Beispiel entspricht einer der drei genannten Methoden.
Danke.
-
@Diverses damit musst du leben. Wutz gibt immer so qualitativ hochwertige Antworten auf Leute die es nicht besser wissen wie er
-
TocToc schrieb:
@Diverses damit musst du leben. Wutz gibt immer so qualitativ hochwertige Antworten auf Leute die es nicht besser wissen wie er
Alles klar
Solange nicht die Mehrheit der Meinung ist, dass ich Unverschämtes wissen wollte, bin ich beruhigt!
-
int friendOf(int param, int* result) { // Success *result = friendValue; return 1; // failure return 0; } // main if (friendOf(i, &result)) { printf("%d is friend of %d\n", i, result); }
Du hast vergessen zu dereferenzieren:
printf("%d is friend of %d\n", i, *result);
-
Bitmapper schrieb:
Du hast vergessen zu dereferenzieren:
Ne, ich übergebe doch
&result
.
-
Diverses schrieb:
Bitmapper schrieb:
Du hast vergessen zu dereferenzieren:
Ne, ich übergebe doch
&result
.Stimmt, dachte du hättest in der main auch einen pointer.