VS2015(C++コンソールアプリケーション)を使用してUDPマルチキャストソケットプログラムを作成しようとしています。
私は次のエラーを受け取りました、
Error C4996 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings mulitcast_listener
「プロジェクト」->「プロパティ」->「構成プロパティ」->「C/C++」->「プリプロセッサ」->「プリプロセッサ定義」でプロジェクト設定に_WINSOCK_DEPRECATED_NO_WARNINGSシンボルを追加しようとしました。同じ。
そして、上にシンボルを追加しようとしました#include "stdafx.h" like
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
そしてNo(/ sdl-) on "Project"-> "Properties"-> "Configuration properties"-> "C/C++"-> General-> SDLチェック
今、私は言っているエラーメッセージが表示されます
Warning C4603 '_WINSOCK_DEPRECATED_NO_WARNINGS': macro is not defined or definition is different after precompiled header
最後に実装しようとしました
inet_pton(AF_INET, HELLO_GROUP, (PVOID *)(&mreq.imr_multiaddr.s_addr));
の代わりに
mreq.imr_multiaddr.s_addr = inet_addr(HELLO_GROUP);
_WINSOCK ...マクロを追加してもエラーが解決されなかった理由を理解する必要があります。
前もって感謝します。
コメントに記載されているように、解決策は、
#define _WINSOCK_DEPRECATED_NO_WARNINGS
後に配置されます
#include "stdafx.h"
しかし、他の#include
ステートメント。
前のアドバイスは機能しますが、_stdafx.h
_の目的を無視しています。アイデアは、頻繁に変更しないヘッダーファイルに_#include
_ステートメントを配置することですinside_stdafx.h
_を使用するためにプリコンパイル済みヘッダーのしたがって、理想的に配置する必要があります
_#define _WINSOCK_DEPCRECATED
_
_stdafx.h
_内、特に影響を受ける他の_#include
_ステートメントの前、特に_winsock2.h
_またはその他のwinsock関連ヘッダーを含める前。