www.mikrocontroller.net

Forum: PC-Programmierung Fixe Rückgabewerte für C-Libs?


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie ist das mit Rückgabewerten in C-Libs? Sollte ich diese fix
vergeben, also 0 für keinen Fehler und alles != 0 ist ein Fehler? Oder
lieber aus einer H-Datei mit definierten Rückgabe-Werten? Dann muss ich
bei jeder Änderung der defines auch die Lib neu kompilieren, oder?

Und was mach ich, wenn eine Lib-Funktion mehrere Rückgabewerte haben
kann? 0 = kein Fehler, 1 = Fehler-Nr. 1, 2 = Fehler-Nr. 2, usw.

Wie löst man das "korrekt"?

Gruß Ralf

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist in der Tat eine übliche Konvention,
0 bei keinem Fehler und einen Wert != 0 bei einem Fehler
zurückzugeben.

Wenn die Fehlercodes eine Bedeutung haben, dann sollten diese als
#defines in einer Headerdatei dokumentiert werden; eine Funktion, die
diese Werte in eine Klartextrepräsentation übersetzt, ist beim Einsatz
auf µCs sicherlich verschmerzbar, beim Einsatz auf Systemen mit mehr
Resourcen aber sehr praktisch.

Es gibt allerdings auch andere Ansätze; manche Systeme geben einen Wert
!= 0 zurück, wenn alles in Ordnung ist, und 0, wenn ein Fehler
aufgetreten ist. Den Fehlercode muss man dann mit GetLastError() oder
einer vergleichbaren Funktion bestimmen.

Sofern die Funktion ein Objekt (Handle, Pointer) oder dergleichen
zurückgibt, ist das auch sinnvoll (Beispiel: fopen).

Eine weitere Variante ist die Verwendung vorzeichenbehafteter
Rückgabewerte. Negative Werte sind als Fehler anzusehen, positive Werte
sind gültige Resultate ...

Recht unpraktisch ist es, wenn eine Library mehrere Varianten mischt,
wie es beispielsweise die Win32-API ganz munter treibt. Einheitlichkeit
erfreut den Anwender.

Du siehst:
Es gibt kein eindeutiges Rezept; es kommt immer auf den spezifischen
Anwendungsfall an.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm... Wenn ich das schon höre, das die Win32-Api munter mischt. Buäh,
Microsoft halt.

Hm, na gut, dann werd ich mir das für mich passende raussuchen.

Gruß Ralf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.