1. 程式人生 > >VS2017使用inet_addr報錯:error C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSO

VS2017使用inet_addr報錯:error C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSO

轉自:VS2015報錯C4996處理,error C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_D


問題:

在vs2017中,使用如下程式碼:

addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

報錯:

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

 

問題出現的原因:

在VS2013以後的版本中,增加了inet_pton()、InetPton()之類的新函式,用於IP地址在“點分十進位制”和“二進位制整數”之間轉換,並且能夠處理ipv4和ipv6。而inet_addr是老函式,高版本VS在編譯時預設使用了新函式,所以會報該錯誤。

 

問題的解決:

1、用所提示的新函式代替inet_addr函式。

2、修改VS配置,告訴它我就要舊函式,修改方法:專案->屬性->C/C++->常規->SDL檢查,將“是”改為“否”,即可。

 

本人使用第二種方法解決問題