我开始研究glibc(GNU Libc)以了解它是如何编写的.在malloc.c,我发现了一段代码如下:
#ifndef void
#define void void
#endif
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释这意味着什么?不void总是定义?
谢谢
我一直在阅读有关虚拟内存(分段+分页)的英特尔手册.据我所知,有一个特殊的寄存器,其中包含全局描述符表(GDT).GDT包含NULL描述符,本地描述符表,TSS和段描述符.此外,几乎所有操作系统(OS)都有一个GDT,并且在启动时加载并且无法更改(可能!!!).我的问题是:
我的系统errno定义为:
int * __error(void);
#define errno (* __error())
Run Code Online (Sandbox Code Playgroud)
我理解errno是一个宏并扩展到* __error()功能:
我到处搜索(我的系统上的源代码),但我找不到__error()函数的定义,有人可以显示/解释它的定义是什么/应该是什么?
表达式如何errno = 0与上面的定义一起使用(分配0给函数?)?是errno = 0扩展到* __error() = 0?
谢谢