BohYoh.comトップページへ  errno
C言語 標準ライブラリ アルファベット順索引 ヘッダ別索引 ホームページへ C言語講座のページ

C89  C99  C11  エラー番号(オブジェクト形式マクロ)
errno
ヘッダ #include <errno.h>
概 要 errnoは、以下の特徴をもつ変更可能な左辺値に展開される。
  • 型intをもつ。
  • C11 スレッド局所記憶域期間をもつ。
標準ライブラリ関数の中には、その値を正のエラー番号に設定するものがある。errnoをマクロとするか、あるいは外部結合をもつと宣言された識別子とするかは、規定されない。実際のオブジェクトにアクセスするためにマクロ定義を無効にした場合、あるいはプログラムが名前errnoをもつ識別子を定義した場合の動作は定義されない。
プログラム開始時の(C11 初期スレッドにおける)errnoの値は0であり、いかなるライブラリ関数も0に設定することはない。標準Cの規格の関数の機能説明でerrnoの使用について規定していない場合、エラーのあるなしにかかわらず、ライブラリ関数の呼出しによってerrnoの値を0以外に設定しもよい。
補 足 マクロerrnoは、オブジェクトの識別子である必要はない。それは関数呼出し(たとえば、*errno())の結果によって決まる変更可能な左辺値に展開してもよい。
エラー検査のためにerrnoを使用するプログラムは、ライブラリ関数呼出しの前にerrnoの値を0に設定し、その次のライブラリ関数の呼出しの前にその値を検査するとよい。もちろん、ライブラリ関数は、関数の入り口でerrnoの値を保存した後に0に設定し、関数が復帰する直前までのerrnoの値が0のままの場合、元の値に戻すということも可能である。


BohYoh.comトップページへ