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;
}
参考:

浙公网安备 33010602011771号