Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ winsock不推荐使用任何警告_Visual C++_Winsock - Fatal编程技术网

Visual c++ winsock不推荐使用任何警告

Visual c++ winsock不推荐使用任何警告,visual-c++,winsock,Visual C++,Winsock,我正在尝试使用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++”->“预处理器”

我正在尝试使用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”不推荐的“无警告”符号添加到我的项目设置中 .. 但它还是这么说的

然后我尝试在上面添加符号#包括“stdafx.h”

#定义\u WINSOCK\u已弃用\u无\u警告1

然后在“项目”->“属性”->“配置属性”->“C/C++”->“常规”->“sdl检查”中No(/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
语句放在
stdafx.h
中,以便使用预编译的头文件。因此,你应该在理想的地方

#define _WINSOCK_DEPCRECATED 

stdafx.h
内部,在其他
之前包含它影响的
语句,特别是在包含
winsock2.h
或其他与winsock相关的头之前。

关于在
stdafx.h
之前添加
\define
,您可能没有意识到这一点:<代码>#首先应该包括“stdafx.h”。如果将
#define
放在包含stdafx之后,但放在所有其他包含之前,会发生什么情况?它将成功构建。。非常感谢您提供这些信息