C Rückgabewert für integer Funktionen

Woodz

Lieutenant
Registriert
Apr. 2009
Beiträge
689
Hi.

Ich habe das Problem, dass ich gern einen Rückgabewert für Funktionen definieren würde, die einen integer Datentyp als Rückgabewert haben und bei denen ein Fehler aufgetreten ist.
  • 1, 0 oder -1 gehen nicht da sie legetime Rückgabewerte sein können.
  • NaN oder NULL werden nicht als Rückgabewerte aktzeptiert
Was für Möglichkeiten gibt es dann noch?

Grüße
 
"Out" Parameter für das Ergebnis und den Rückgabewert als Errorcode verwenden
 
  • Gefällt mir
Reaktionen: Bunshichi
Könntest du evtl. erklären, wie du das genau meinst?
Gruß
 
Wie groß ist der Rückgabe-Bereich? Ist es ein int32?
Dann würde ich z.B. int64 liefern und einen Wert außerhalb des int32-Bereichs als Fehler ansehen.

C-API macht es bei fgetc() ähnlich, das liefert statt einem char ein int, um eben auch EOF = -1 liefern zu können.

Ob das elegant ist in deinem Fall weiß ich nicht.
 
Zuletzt bearbeitet:
Als Parameter einen int Pointer reingeben. Dort das Ergebnis hinterlegen. Error Code als rückgabewert nutzen. Einfach mal Out-Parameter googeln.
 
  • Gefällt mir
Reaktionen: kuddlmuddl
Woodz schrieb:
Könntest du evtl. erklären, wie du das genau meinst?
Gruß

Ein Beispiel verdeutlicht es am besten:


C:
int integer_division(int a, int b, int* result) {
    if (b == 0) {
        return -1;
    }
    *result = a / b;
    return 0;
}


C:
int a = ...;
int b = ...;
int result;

int err = integer_division(a, b, &result);

if (err < 0) {
    printf("Error: Division by zero\n");
}
 
  • Gefällt mir
Reaktionen: Raijin und Nilson
Ok. Das ist ziemlich einfach und halbwegs elegant dazu.
Ich danke Euch.
 
Das du hier nach „Möglichkeiten“ gefragt hast, will ich mal noch (nicht ganz ernst gemeint) setjmp/longjmp einwerfen :)
 
Zurück
Oben