winsock2の罠
winsock2を使用する場合windows.hをインクルードする前にwinsock2.hをインクルードしましょう。
#include <windows.h> #include <WinSock2.h>
とすると
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: 'AF_IPX' : マクロが再定義されました。 1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(460) : 'AF_IPX' の前の定義を確認してください ...
と怒られます。
どうもwindows.hはインクルードする前にwinsockがインクルードされていないとwinsock.hをインクルードするのだとか。
ということで対応策はインクルードの順番を変えるか_WINSOCKAPI_をdefineしましょう。 -> ソース
#include <WinSock2.h> #include <windows.h>
か
#define _WINSOCKAPI_ #include <windows.h> #include <WinSock2.h>
ちなみにWIN32_LEAN_AND_MEANを定義しても良いようで。 -> ソース2
まぁLEAN_AND_MEANはwinsock意外にも影響するのでwinsockのみであれば_WINSOCKAPI_で良いでしょう。
ひっかかったのでメモ。