【发布时间】:2015-08-26 18:44:15
【问题描述】:
我正在尝试使用 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" 上方添加符号 喜欢
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
然后No(/sdl-)在“项目”->“属性”->“配置属性”->“C/C++”->常规->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... 宏后错误仍未解决。
提前致谢。
【问题讨论】:
-
关于在
stdafx.h之前添加#define,您可能没有意识到这一点:en.wikipedia.org/wiki/Precompiled_header#stdafx.h。#include "stdafx.h"应该是第一件事。如果您将#define放在包含 stdafx 之后但在所有其他包含之前会发生什么? -
它构建成功.. 非常感谢您提供这些信息
标签: visual-c++ winsock