LoginSignup
4
1

More than 1 year has passed since last update.

【Win32】windows.hとwinsock2.hのインクルード時のコンパイルエラー

Posted at

トラブル内容

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はインクルードしない。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1