我想从WinSock知道这个函数之间FAR
和使用的区别。FAR *
int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR * name, int len);
您可以放心地忽略这些FAR
关键字,因为它们不再使用。
很久以前,在 Win16 时代,有 16 位指针(NEAR
)和 32 位指针(FAR
)。他们的处理方式不同,在某些情况下并不简单。自从Win32开始以来,这种差异已经消失了。Win64 也没有使用分段内存模型。
与此同时,在硬件层面,这些细分市场仍然存在于英特尔架构中。但是 Windows 对用户模式程序员(以及内核模式驱动程序编写者)完全隐藏了这些细节。
您可能仍会在头文件中找到这些关键字,因为它们不会伤害任何人。
在这两种情况下,当此代码用于分段内存模型时,它们都会修改指针的大小。const struct sockaddr FAR * name
表示名称将是一个 32 位指针。int PASCAL FAR connect
表示任何指向连接函数的指针都是 32 位指针。另一种方法是NEAR
这意味着指针是 16 位的。
但自 Windows 3.1 以来,没有人使用分段内存模型。它们太老了,我什至不确定我使用的术语是否正确。它们太老了,我敢打赌这里一半以上的常客永远不会听说过它们。所以我想我可以自信地说你可以忽略 FAR 的任何使用,只是假装它不存在。
你在哪里看到这个?