kar*_*kar 9 winsock visual-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
Run Code Online (Sandbox Code Playgroud)
我尝试通过"Project" - >"Properties" - >"Configuration properties" - >"C/C++" - >"Preprocessor" - >"Preprocessor definitions"将_WINSOCK_DEPRECATED_NO_WARNINGS符号添加到我的项目设置中.但它仍然说相同.
然后我试图添加符号上方的#include"stdafx.h中" 像
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
然后在"项目" - >"属性" - >"配置属性" - >"C/C++" - >"通用" - >"SDL"检查中" 否"(/ sdl-)
现在我收到一条错误消息说
Warning C4603 '_WINSOCK_DEPRECATED_NO_WARNINGS': macro is not defined or definition is different after precompiled header
Run Code Online (Sandbox Code Playgroud)
最后我试着实施
inet_pton(AF_INET, HELLO_GROUP, (PVOID *)(&mreq.imr_multiaddr.s_addr));
Run Code Online (Sandbox Code Playgroud)
代替
mreq.imr_multiaddr.s_addr = inet_addr(HELLO_GROUP);
Run Code Online (Sandbox Code Playgroud)
我需要理解为什么即使在添加_WINSOCK ...宏之后错误也没有解决.
提前致谢.
Aif*_*ify 13
如评论中所述,解决方案是确保该行
#define _WINSOCK_DEPRECATED_NO_WARNINGS
Run Code Online (Sandbox Code Playgroud)
放在后面
#include "stdafx.h"
Run Code Online (Sandbox Code Playgroud)
但在其他#include陈述之前.
小智 5
虽然之前的建议有效,但它忽略了 的目的stdafx.h。这个想法是,您可以在内部#include放置不经常更改的头文件的语句,以便利用预编译头。因此你应该理想地放置 stdafx.h
#define _WINSOCK_DEPCRECATED
Run Code Online (Sandbox Code Playgroud)
inside stdafx.h,在它影响的其他#include语句之前,特别是在包含winsock2.h或其他与winsock相关的标头之前。
| 归档时间: |
|
| 查看次数: |
33163 次 |
| 最近记录: |