3
Cライブラリ関数の背後にある根拠がerrnoをゼロに設定しない
C標準では、C標準ライブラリ関数errnoをゼロに設定しないことを義務付けています。なぜこれが正確なのですか? 私はそれがいくつかの関数を呼び出しerrno、最後の関数の後でのみチェックするのに役立つことを理解できました-例えば: errno = 0; double x = strtod(str1, NULL); long y = strtol(str2, NULL); if (errno) // either "strtod" or "strtol" failed else // both succeeded しかし、これは「悪い習慣」とは見なされていませんか?あなただけチェックしているので、errno非常に最後に、あなただけの機能の一つであることを知ったの失敗ではなく、どの関数が失敗しました。何かがほとんどの実用的なプログラムに対して十分に失敗したことを単に知っていますか? さまざまなC Rationaleドキュメントを探してみましたが、それらの多くにはの詳細があまりありません<errno.h>。