vc++2017 使用笔记

【问题1】 

ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义; winsock2.h(460) : 参见“AF_IPX”的前一个定义

【原因】
windows.h头文件中已经包含有winsock.h,winsock.h和winsock2.h定义了一样的宏。

【解决方案】
方案一:定义宏 WIN32_LEAN_AND_MEAN 

属性 > 配置属性 > c/c++ > 预处理器 > 预处理器定义:添加 WIN32_LEAN_AND_MEAN 

如果该宏定义存在,windows.h就不会包含winsock.h。

方案二:将winsock2.h文件写在windows.h之前。

#include "winsock2.h"
#include "windows.h"

【问题2】


  C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS

错误:C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings

在vs2017 下socket编程时会出现如题的错误,错误的原因在于从VS2013版本以上开始支持新的函数,使用旧的函数会报错。

这里推荐使用新的函数替换老的函数。

解决方法:

1.可以修改VS配置,使其支持老的函数

把SDL检查关闭

2.使用推荐的新函数

这种方式值得推荐,紧跟时代潮流么

在使用新函数时需要添加
 

#include <Ws2tcpip.h>头文件

新函数的使用方法如下:

//vs2013版本以上使用新的函数转换IP地址
​​​​​​​inet_pton(AF_INET, "127.0.0.1", &sockAddr.sin_addr.s_addr);
 
//InetPton(AF_INET, "127.0.0.1", &sockAddr.sin_addr.s_addr);
 
//sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白的编程日志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值