2011-12-18 9 views
1

私は、C言語の昔からの、関数の実行の例外の投げ込み/突然の終了/何らかの理由で失敗したことを反映する、事前に合意された値があるかどうか疑問に思っていましたか?この値は0か-1か、完全にあなた次第であり、標準は存在しませんか?通常NULLを返すポインタを返す実行に失敗した場合の一般的な値はありますか?

+0

''文字列内の文字のインデックスを見つける 'のようないくつかの質問では、0は正当な値なので、 '-1'は失敗を示します。 –

答えて

5

機能不全(例えばmalloc)を示します。

ほとんどのPOSIX関数は失敗に成功した場合に0、非ゼロを返します。通常の操作の一部としてゼロ以外の値を返す必要がある場合、失敗すると負の値を返すことがよくあります。

しかしこれはすべて慣例にすぎません。

0

一般的な規約の1つは、無効な値を返すことです。例えば、長さを返す関数は、失敗すると-1を返します。

汎用エラーコードは、malloc関数の挙動を模倣するために0またはNULLする傾向があります。一方、POSIXは逆の規則を使用します。

は、より「高度な」エラーチェックのためにerrnoに慣れるようにしてください。多くの標準ライブラリルーチンでは、エラーが発生したときにチェックするためのエラーコードが格納されています。