我的系统errno定义为:
int * __error(void);
#define errno (* __error())
Run Code Online (Sandbox Code Playgroud)
我理解errno是一个宏并扩展到* __error()功能:
我到处搜索(我的系统上的源代码),但我找不到__error()函数的定义,有人可以显示/解释它的定义是什么/应该是什么?
表达式如何errno = 0与上面的定义一起使用(分配0给函数?)?是errno = 0扩展到* __error() = 0?
谢谢
该__error函数返回指向errno调用线程变量的指针.的errno宏解引用该指针,从而可在任一侧上出现的一个等号左值.
回答你的问题:
该函数确定该errno特定线程的变量的正确地址.每个线程都有自己的.
是的,它变成(* __error()) = 0;了分配0给该线程的errno变量.