Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我的系统上errno定义为:
errno
int * __error(void); #define errno (* __error())
我理解errno是一个宏并扩展为* __error()功能:
* __error()
我到处搜索(我系统上的源代码),但我找不到__error()函数的定义,有人可以显示/解释它的定义是什么吗?
__error()
表达式如何errno = 0与上述定义一起工作(分配0给函数?)?errno = 0扩展* __error() = 0为?
errno = 0
0
* __error() = 0
谢谢
该__error函数返回一个指向errno调用线程变量的指针。宏取消引用该errno指针,从而产生一个可以出现在等号两侧的左值。
__error
要回答您的问题:
该函数确定该errno特定线程的变量的正确地址。每个线程都有自己的。
是的,它变成(* __error()) = 0;了分配0给该线程errno变量的那个。
(* __error()) = 0;