使用,我想知道在 此功能用於從的WinSockFAR
和FAR *
之間的差異。差異的winsock
int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR * name, int len);
使用,我想知道在 此功能用於從的WinSockFAR
和FAR *
之間的差異。差異的winsock
int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR * name, int len);
在這兩種情況下,它們修改指針的長度當該代碼在一個分段存儲器模型被使用。 const struct sockaddr FAR * name
表示該名稱將是一個32位指針。 int PASCAL FAR connect
表示指向連接函數的任何指針都將是一個32位指針。另一種選擇是NEAR
,這意味着指針是16位的。
但自Windows 3.1以來,沒有人使用過分段內存模型。他們很老,我甚至不知道我使用的是正確的術語。他們太老了,我敢打賭,這裏的一半以上的常客永遠都聽不到他們。所以我認爲我可以自信地說你可以忽略任何使用FAR,只是假裝它不存在。
你從哪裏看到這個?
您可以放心地忽略FAR
關鍵字,因爲它們不再被使用。
很久以前,在Win16的時代,有16位指針(NEAR
)和32位指針(FAR
)。他們的處理是不同的,在某些情況下並不簡單。自Win32開始以來,這種差異已經消失。 Win64也不使用分段內存模型。
同時在硬件層面上,段仍然存在於英特爾架構中。但是Windows的這些細節對用戶模式程序員(以及內核模式驅動程序編寫者)來說是完全隱藏的。
您仍然可以在頭文件中找到這些關鍵字,因爲它們不會傷害任何人。
遠函數是當前代碼段之外的函數。 – oldrinb
星號不是真的屬於'FAR',而是屬於類型。所以'name'是一個指向'struct sockaddr'的指針。在一箇舊的16位系統上,'FAR'會使它成爲一個32位指針,指向'struct sockaddr'。 –