Visual C ++中不推荐使用的命令

时间:2014-11-15 15:39:36

标签: c++ visual-studio deprecated

在项目的Visual Studio 2013中构建解决方案时,我注意到我收到以下引用的警告:

  

警告C4996:' gethostbyname':改用getaddrinfo()或GetAddrInfoW()或定义_WINSOCK_DEPRECATED_NO_WARNINGS以禁用已弃用的API警告src \ core \ JCSocket.cpp 77 1
  警告C4996:' inet_addr':使用inet_pton()或InetPton()代替或定义_WINSOCK_DEPRECATED_NO_WARNINGS以禁用已弃用的API警告src \ core \ JCSocket.cpp 82 1
  警告C4996:' inet_addr':使用inet_pton()或InetPton()代替或定义_WINSOCK_DEPRECATED_NO_WARNINGS以禁用已弃用的API警告src \ core \ JCSocket.cpp 121 1
  警告C4996:' inet_ntoa':使用inet_ntop()或InetNtop()代替或定义_WINSOCK_DEPRECATED_NO_WARNINGS以禁用不推荐使用的API警告src \ core \ MuninNodeServer.cpp 64 1
  警告C4996:' GetVersionExW':声明已弃用src \ plugins \ disk \ DiskTimeMuninNodePlugin.cpp 48 1
  警告C4996:' GetVersion':声明已弃用src \ plugins \ external \ ConsolePipe.cpp 12 1
  警告C4996:' GetVersionExW':声明已弃用src \ plugins \ PerfCounterMuninNodePlugin.cpp 56 1
  警告C4996:' GetVersionExW':声明已弃用src \ plugins \ uptime \ UptimeMuninNodePlugin.cpp 34 1

每当我尝试将其更改为推荐的IntelliSense命令时,它会说:

  

IntelliSense:标识符" inet_ntop"未定义\ src \ core \ MuninNodeServer.cpp 64 31

2 个答案:

答案 0 :(得分:3)

这些错误告诉你该怎么做。微软很不错。

  

gethostbyname - > getaddrinfo
  inet_addr - > inet_pton
  inet_ntoa - > inet_ntop

至于GetVersionExWGetVersion Microsoft建议使用相应的Version Helper Function

答案 1 :(得分:0)

Visual Studio告诉您此警告导致您尝试使用不安全功能,这意味着包含功能正文

并且主体显然可以包含已签名的溢出,并且可能会出现另一个编译错误,或者可能在新版本库中不支持

顺便说一下,关于你如何使用这个功能

只需添加以下行

即可禁用警告
#pragma warning( disable : 4996)

代码的顶部

禁用警告错误代码 4996 ,并且可以正常运行。

  

另一种方式:

  1. 解决方案资源管理器右键单击项目,然后选择属性
  2. 导航至配置属性>> C / C ++ >> 高级
  3. 最后只需 4996 停用特定警告,然后点击应用>>的确定
  4.   

    注意:我更喜欢 代码方式 ,如果您不是,那么学习起来会更好   在visual studio中编程或制作头文件   你的图书馆