什么是 char FAR*
和 char FAR* FAR*
?
远指针是包含“段选择子”的指针。
举例来说,在x86_32的保护模式中,内存在硬件层面必须分段;由“段选择子”(16位)加上段内偏移(32位)构成,称为全指针(48位)。用long jmp来跳转到远指针时,cpu切换到段选择子在gdt中指示的内存段来执行代码,同时刷新段选择器cs。故远指针通常被操作系统用于切换代码段(的权限),比如上下文切换。
如果是应用层程序,现代系统基本都会将用户进程的虚拟空间视作一个完整的段,故far pointer几乎无作用。您可以直接无视“far”标签。
不出意外是这玩意儿...