errnoってどんな定義をされているのでしょうか?
errnoってどんな定義をされているのでしょうか? manを見ても、int型とは書かれていましたが、グローバル変数なのか、staticなのかなど、どんな宣言をされてるのかわかりません。どんな定義がされているのでしょうか? 一応、ヘッダー見たら #define errno (*__error()) となっていましたが、そもそもint型じゃなかったので、どういうことなのでしょうか? 参照先 (errno は、ISO C standard で int 型の変更可能な左辺値 として定義されており、明示的に宣言を行ってはならない; errno はマクロの場合もありえる。 errno はスレッド毎に値を持つ。 つまりあるスレッドで errno が設定されても、 他のスレッドの errno には影響しない。 https://linuxjm.osdn.jp/html/LDP_man-pages/man3/errno.3.html)
C言語関連・80閲覧
ベストアンサー
環境によって違いますが… #define errno (*__error()) ってなってたのなら、それが定義です。 __error という関数があって、それが int* を返すんでしょう。 __error の中身は知りませんが、それの定義を見ればまた詳しく見ていけるかと思いますが。
質問者からのお礼コメント
ものすごく勉強になりました!本当にありがとうございます!!
お礼日時:1/21 11:24