0

すべての関数が結果ステータスを返すとします (Microsoft の HRESULT と同様)。これらの数値は列挙型で定義され、1 つの値はすべてが OK であることを示し、他のすべての値は NOT OK のフレーバーを示します。

直感的に、私は OK = 0 に番号付けし、その他はすべて !=0 にします。ただし、C プログラマー (および他のいくつかの言語) の場合、これは bool の正反対です。

これに関してプログラミングのガイドラインがあるかどうか疑問に思い始めました。一般的な慣行は何ですか?長所と短所は何ですか?これは、私が OK = 0x01 で他のすべての失敗状態が !0x01 であるプロジェクトに関与するようになり (はい、0x0 も失敗です)、言語間で戻り値をマーシャリングしている (列挙型が int になる) ためです。

4

1 に答える 1

0

ゼロがエラーではなく、それ以外がエラーである場合、次のように書くことができます

error = function_that_returns_an_error();

if( error )
    handleError();

また

if( !error )
    allsWell();

これは非常に明確なコードです

余談ですが、負の値がエラー コードで、正の値がステータス コードである場合があります (たとえば、「さらにデータが必要」の場合、0 で問題ありません)。

于 2014-03-28T09:35:03.073 に答える