エラーコードが無効にされるのはなぜですか?


12

非常に多くの場合、私は、たとえば、返されるエラーコードのCコードの否定で見るreturn -EINVAL代わりにreturn EINVAL。否定を使用した理由

c 

回答:


8

多くのUNIXenでは、syscallsの規則では、エラーの場合は否定されたエラーコードを返し、成功の場合は実際の値を返します。

これは、ユーザー空間側-1での正のエラーコードを持つエラーerrno、または成功した場合の実際の値に変換されます。

このような戻り値の二重の目的は、この種の言語での複数の戻りが面倒なので、最終的なエラーを保持するためにoutパラメーターを渡す必要があるためです。


4

これは慣習です。多くの関数は、成功すると厳密に肯定的な結果を返し、失敗すると否定的な結果を返します。最初は、Unixプロセスのリターンコードに関連していました。成功は0によって示されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.