WinSockからこの関数で使用されるFAR
との違いを知りたいです。FAR *
int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR * name, int len);
FAR
キーワードはもう使用されていないため、安全に無視できます。
昔、Win16 の時代には、16 ビットのポインター ( NEAR
) と 32 ビットのポインター ( FAR
) がありました。彼らの扱いは異なり、場合によっては単純ではありませんでした。Win32 の開始以来、この違いはなくなりました。Win64 もセグメント化されたメモリ モデルを使用していません。
同時に、ハードウェア レベルでは、セグメントは Intel アーキテクチャにまだ存在しています。しかし、これらの詳細は、Windows によってユーザー モード プログラマー (およびカーネル モード ドライバー ライター) には完全に隠されています。
これらのキーワードは、誰にも害を及ぼさないため、ヘッダー ファイルにまだ見つかる場合があります。
どちらの場合も、このコードがセグメント化されたメモリ モデルで使用されると、ポインターのサイズが変更されます。const struct sockaddr FAR * name
name が 32 ビット ポインターになることを示します。int PASCAL FAR connect
connect 関数へのポインタはすべて 32 ビット ポインタになると述べています。別の方法としてはNEAR
、ポインターが 16 ビットであることを意味します。
しかし、Windows 3.1 以降、誰もセグメント メモリ モデルを使用していません。それらは非常に古いので、正しい用語を使用しているかどうかさえ確信が持てません。彼らはとても古いので、ここの常連客の半分以上は聞いたことがないでしょう. したがって、FAR の使用は無視してよいと自信を持って言えます。FAR が存在しないふりをするだけです。
これどこで見た?