Sehr oft sehe ich in C-Code die Negation zurückgegebener Fehlercodes, zB return -EINVALstatt return EINVAL. Warum Negation verwendet?
Sehr oft sehe ich in C-Code die Negation zurückgegebener Fehlercodes, zB return -EINVALstatt return EINVAL. Warum Negation verwendet?
Antworten:
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.