MySQLCライブラリで必要なものを含めています。
VS2010のオートコンプリートも表示されています-これが何であるかについて何か考えはありますか?
それらは交換可能ですか、そして一方が他方よりも優れている点はありますか?
ありがとう!
@costの答え links とりわけ、答えられなかったこの質問をする議論へ:
Winsock2.hの前にwindows.hを含めることができない理由はありますか?それは私にたくさんのエラーを与えます、しかし私がそれらの順序を切り替えるとすべてが大丈夫です...それはなぜですか?
windows.h
には、新しいWindowsバージョン用にコンパイルする場合はwinsock2.h
が含まれますが、古い開発の場合は、代わりにwinsock.h
が含まれます。ただし、問題はwindows.h
だけに限定されません。 winsock.h
がwinsock2.h
の前に含まれると、コンパイラエラーが発生します。その理由は、2つのファイルDO NOTが非常にうまく共存しているためです。 winsock2.h
は、replacewinsock.h
であり、拡張しないように設計されています。 winsock.h
で定義されているものはすべて、winsock2.h
でも定義されています。 winsock2.h
がwinsock.h
の前に含まれている場合、winsock2.h
は_WINSOCKAPI_
を定義して、コンパイラが後続のwinsock.h
インクルードを処理しないようにします。すべて問題ありません。ただし、winsock.h
がwinsock2.h
の前に含まれている場合、winsock2.h
はそれを検出せず、winsock.h
がすでに定義しているすべてを再定義しようとするため、コンパイルが失敗します。
同じプロジェクトでwinsock.h
を使用するコードとwinsock2.h
を使用するコードを混在させる場合は十分に注意する必要があります。たとえば、winsock2.h
を使用する独自のソケットコードを記述し、winsock.h
を引き続き使用するサードパーティライブラリを使用する場合です。
Winsock 1.1を使用する場合を除いて、winsock2.h
を使用する必要があります。 winsock2.h
はWinsock2用です。
詳細については、 Wikipedia Winsockページ を参照してください。