小编Ori*_*ion的帖子

glibc - #define void

我开始研究glibc(GNU Libc)以了解它是如何编写的.在malloc.c,我发现了一段代码如下:

#ifndef void
#define void        void
#endif
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这意味着什么?不void总是定义?

谢谢

c glibc libc

8
推荐指数
2
解决办法
973
查看次数

全局描述表

我一直在阅读有关虚拟内存(分段+分页)的英特尔手册.据我所知,有一个特殊的寄存器,其中包含全局描述符表(GDT).GDT包含NULL描述符,本地描述符表,TSS和段描述符.此外,几乎所有操作系统(OS)都有一个GDT,并且在启动时加载并且无法更改(可能!!!).我的问题是:

  1. 存储所有这些信息的位置(NULL,LDT,TSS和Segment描述符)?它们是物理内存,RAM还是本地硬盘?
  2. 段描述符是否与代码段(ASM:CS),数据段(ASM:DS),...如果相同,那么有多少存储在GDT中(只有一个CS,一个DS,......) ?
  3. Protable Executable(PE)Loader是否可以处理这些信息?

windows x86 operating-system intel

8
推荐指数
2
解决办法
3371
查看次数

了解C errno

我的系统errno定义为:

int *    __error(void);
#define errno    (* __error())
Run Code Online (Sandbox Code Playgroud)

我理解errno是一个宏并扩展到* __error()功能:

  1. 我到处搜索(我的系统上的源代码),但我找不到__error()函数的定义,有人可以显示/解释它的定义是什么/应该是什么?

  2. 表达式如何errno = 0与上面的定义一起使用(分配0给函数?)?是errno = 0扩展到* __error() = 0

谢谢

c libc

3
推荐指数
1
解决办法
1057
查看次数

标签 统计

c ×2

libc ×2

glibc ×1

intel ×1

operating-system ×1

windows ×1

x86 ×1