1

最近、Winsockプログラミングを行っています。私はWindowsSDK内で多くのことをしていません。私は若い頃から実際のWin32アプリケーションを作成しておらず、そのときは考えていませんでしたが、プラットフォームに依存しない他の型を単純にラップするように定義された型のいくつかを見て、なぜ誰かが疑問に思います彼らがする必要がなかったときにそれらを使用するでしょう。ネイティブのカウンターパートでPSTRまたはDWORDを使用することに勝る利点はありません。Winsockリファレンスには、すべての構造体とtypedef を一覧表示するページがあります定義されています。それらはすべての構造を大文字にtypedefし、Windows SDKの設計ですべてのタイプをこのように大文字にtypedefするという決定がなされたときに、達成しようとしていた全体的な戦略を理解していません。

Windowsでコードを記述している場合でも、大文字のバージョンがない場合でも、将来必要になった場合にコードの移植が困難になると思われるため、なぜだれもが大文字のバージョンを使用するのかわかりません。可能な場合は、常にネイティブタイプと元のWinsock構造を使用します。この質問に対する答えを探してみましたが、クエリを正しく表現する方法がわからない可能性があります。私が見逃しているこれにはいくつかの利点がありますか?誰かが私のためにこれにいくつかの光を当てることができますか?

4

1 に答える 1

2

利点は、typedefWindowsSDKのが必要に応じて調整されることです。最近の歴史でおそらく最良の例は、DWORD_PTR適切に使用された場合にx64ビルドで箱から出して正しく動作することですが、これを「ネイティブタイプ」と呼ばれるもの(つまり、言語標準)。

また、一部のWinsock関数は、元のBSDソケット関数の正確な対応物ではないことにも注意してください。したがって、レガシーの理由であろうと簡潔さであろうと、物事を人為的に分離しておくことは理にかなっています。

ビルドに応じて調整されるため、言語標準で定義されていない特定のWin32タイプについても同じことが言えますLPTSTR

stdint.h最後になりましたが、クロスプラットフォームプログラミングに携わったことがあり、さまざまな理由で(すべてまたは一部の)タイプに依存できない場合は、などのタイプを高く評価します。DWORDこれは、話すときに関連する特定の幅を意味するためです。いくつかのインターフェース(API)へ。

于 2012-05-12T00:14:03.277 に答える