0

我想从WinSock知道这个函数之间FAR和使用的区别。FAR *

int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR * name, int len);
4

2 回答 2

4

您可以放心地忽略这些FAR关键字,因为它们不再使用。

很久以前,在 Win16 时代,有 16 位指针(NEAR)和 32 位指针(FAR)。他们的处理方式不同,在某些情况下并不简单。自从Win32开始以来,这种差异已经消失了。Win64 也没有使用分段内存模型。

与此同时,在硬件层面,这些细分市场仍然存在于英特尔架构中。但是 Windows 对用户模式程序员(以及内核模式驱动程序编写者)完全隐藏了这些细节。

您可能仍会在头文件中找到这些关键字,因为它们不会伤害任何人。

于 2012-09-12T07:00:38.613 回答
3

在这两种情况下,当此代码用于分段内存模型时,它们都会修改指针的大小。const struct sockaddr FAR * name表示名称将是一个 32 位指针。int PASCAL FAR connect表示任何指向连接函数的指针都是 32 位指针。另一种方法是NEAR这意味着指针是 16 位的。

但自 Windows 3.1 以来,没有人使用分段内存模型。它们太老了,我什至不确定我使用的术语是否正确。它们太老了,我敢打赌这里一半以上的常客永远不会听说过它们。所以我想我可以自信地说你可以忽略 FAR 的任何使用,只是假装它不存在。

你在哪里看到这个?

于 2012-09-12T06:23:49.000 回答