34

別の簡単な例:

if (wpa_s->mlme.ssid_len == 0)
    return -EINVAL;

なぜ単項マイナス?これは (通常) 成功時に >0 を返し、失敗時に <(=)0 を返す関数に対して行われますか、それとも他の理由がありますか?

4

4 に答える 4

17

それが基本的に理由です。多くの関数には多くの「良い」正の結果があるため、エラー コードには負の値が残ります。

C / POSIX エラー コードは少し「歴史的に成長」しているため、韻を踏んだり理由を付けすぎたりするのはあまり意味がありません。

最近の多くの言語では、エラーに対して例外をスローするため、エラー コードに対する可能な応答範囲の一部をハイジャックする必要はありません。もちろん、どちらにもトレードオフがあります。

于 2009-12-04T18:25:19.477 に答える