errno 是个什么?

errno 明面上看,是线程下全局变量,在一个线程内设置不会影响其他线程的值。
 
man 3 errno 得知,errno 是可修改的整形左值。在 linux 中,实现方式为:errno 实际是个宏,会展开为 (*__errno_location ())。
 
证据如下:
 
$ cat > errno.c
#include <errno.h>
 
void f() {
  errno = 0;
}
$ gcc -E errno.c | tail -3
void f() {
  (*__errno_location ()) = 0;
}
 
参考:
posted @ 2013-02-25 23:28  uhziel  阅读(263)  评论(0)    收藏  举报