作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的系统上 errno
定义为:
int * __error(void);
#define errno (* __error())
我理解 errno
是一个宏并扩展为 * __error()
函数:
我到处搜索(源代码在我的系统上)但找不到 __error()
函数的定义,有人可以显示/解释什么是/应该是什么的定义是吗?
表达式 errno = 0
如何与上述定义一起工作(将 0
分配给函数?)? errno = 0
是否扩展为 * __error() = 0
?
谢谢
最佳答案
__error
函数返回一个指向调用线程的 errno
变量的指针。 errno
宏取消对该指针的引用,导致左值可以出现在等号的两边。
回答您的问题:
该函数确定该特定线程的 errno
变量的正确地址。每个线程都有自己的线程。
是的,它变为 (* __error()) = 0;
将 0
分配给该线程的 errno
变量。
关于c - 了解 Cerrno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048187/
在我的系统上 errno 定义为: int * __error(void); #define errno (* __error()) 我理解 errno 是一个宏并扩展为 * __erro
我是一名优秀的程序员,十分优秀!