標準エラー値を返す関数で、エラーマクロ名の前にハイフン(-)が付いているのはなぜですか?たとえば、私はブートローダーのコードをトレースしており、それは各関数です。例:return -EINVAL
質問する
134 次
1 に答える
4
これは、私がこのパターンを見た場所である Linux カーネルの関数について話していると思います。
これは、失敗を示すために負を返す必要がありint
、マクロを使用したい関数で発生しますが、マクロの値は正です。
したがって、eg による失敗を通知したいコードEINVAL
は行います。
return -EINVAL;
したがって、ハイフンは単なる前置否定演算子であり、マクロからの正の値を負の値に変換します。
周囲のコード (syscall メカニズム) がこれを検出し、実際のエラーをコピーして、ユーザーの呼び出しなどにerrno
戻すことができると思います。-1
私はこれを確認していませんが、エラー コードの処理/伝播をその生成から分離する簡単な方法としては理にかなっています。
于 2012-10-31T10:22:30.007 に答える