Warum werden Fehlercodes negiert?


12

Sehr oft sehe ich in C-Code die Negation zurückgegebener Fehlercodes, zB return -EINVALstatt return EINVAL. Warum Negation verwendet?

c 

Antworten:


8

Unter vielen UNIXen besteht die Konvention für Systemaufrufe darin, dass sie den im Fehlerfall negierten Fehlercode und im Erfolgsfall den tatsächlichen Wert zurückgeben.

Dies wird auf der Seite des Benutzerraums in -1Fehler mit dem positiven Fehlercode in errnooder dem tatsächlichen Wert im Erfolgsfall übersetzt.

Die Notwendigkeit für diese doppelte Verwendung des Rückgabewerts besteht darin, dass Mehrfachrückgaben in dieser Art von Sprache störend sind, da Sie auf die Übergabe von Out-Parametern zurückgreifen müssten, um einen eventuellen Fehler zu halten.


4

Es ist eine Konvention; Viele Funktionen liefern ein strikt positives Ergebnis beim Erfolg und ein negatives Ergebnis beim Scheitern. Ursprünglich bezog es sich auf den Rückkehrcode des Unix-Prozesses. Ein Erfolg wurde mit 0 angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.