#トラブル内容
windows.hとwinsock2.hを利用するためどちらもインクルードした際に、二重定義と思われるコンパイルエラーが発生した。
#include <windows.h>
#include <winsock2.h>
>>warning C4005: 'AF_IPX' : マクロが再定義されました。
#原因
windows.hはwinsock2.hが先にインクルードされていないと、winsock.hを自動的にインクルードしてしまう。
#対策内容
(1)windows.hをインクルードする前にwinsock2.hを先にインクルードする。
#include <winsock2.h> // こちらが先
#include <windows.h>
(2)_WINSOCKAPI_を定義する。
#define _WINSOCKAPI_ // windows.hを定義した際に、winsock.hを自動的にインクルードしない
#include <windows.h>
#include <winsock2.h>
コンパイルエラーを避けるため、winsock2.hを利用する場合は、可能な限りwindows.hはインクルードしない。