Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual C++;_C++_Visual Studio_Deprecated - Fatal编程技术网

C++ Visual C++;

C++ Visual C++;,c++,visual-studio,deprecated,C++,Visual Studio,Deprecated,在Visual Studio 2013中为一个项目构建解决方案时,我注意到我收到了以下参考的警告: 警告C4996:'gethostbyname':改用getaddrinfo()或GetAddrInfoW(),或定义_WINSOCK_DEPRECATED_NO_警告以禁用不推荐的API警告src\core\JCSocket.cpp 77 1 警告C4996:'inet\u addr':改用inet\u pton()或inepton(),或定义_WINSOCK\u已弃用\u NO\u警告以禁用弃用

在Visual Studio 2013中为一个项目构建解决方案时,我注意到我收到了以下参考的警告:

警告C4996:'gethostbyname':改用getaddrinfo()或GetAddrInfoW(),或定义_WINSOCK_DEPRECATED_NO_警告以禁用不推荐的API警告src\core\JCSocket.cpp 77 1
警告C4996:'inet\u addr':改用inet\u pton()或inepton(),或定义_WINSOCK\u已弃用\u NO\u警告以禁用弃用的API警告src\core\JCSocket.cpp 82 1
警告C4996:'inet\u addr':改用inet\u pton()或InetPton(),或定义_WINSOCK\u已弃用\u NO\u警告以禁用弃用的API警告src\core\JCSocket.cpp 121 1
警告C4996:“inet\u ntoa”:改用inet\u ntop()或inentop(),或定义\u WINSOCK\u不推荐的\u NO\u警告以禁用不推荐的API警告src\core\MuninNodeServer.cpp 64 1
警告C4996:“GetVersionExW”:已声明为不推荐使用的src\plugins\disk\DiskTimeMuninNodePlugin.cpp 48 1
警告C4996:“GetVersion”:已声明为不推荐使用的src\plugins\external\consolePie.cpp 12 1
警告C4996:“GetVersionExW”:已声明为不推荐使用的src\plugins\PerfCounterMuninNodePlugin.cpp 56 1
警告C4996:“GetVersionExW”:已声明为不推荐使用的src\plugins\uptime\UptimeMuninNodePlugin.cpp 34 1

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

IntelliSense:标识符“inet\u ntop”未定义\src\core\MuninNodeServer.cpp 64 31


这些错误告诉你该怎么做。微软就是这样

gethostbyname
->
inet\u addr
->
inet\u ntoa
->


对于
GetVersionExW
GetVersion
Microsoft建议使用适当的。

Visual Studio会告诉您此警告,因为您试图使用不安全函数,这意味着包含函数体

很明显,主体可能包含签名溢出,并且可能会出现另一个编译错误,或者在较新的库中可能不支持它

顺便说一下,这是关于如何使用这个函数的


只需添加以下行即可禁用警告

#pragma warning( disable : 4996)
在代码的顶部

这将禁用警告错误代码4996,并且工作正常,不会出现任何问题

另一种方式:

  • 解决方案资源管理器中右键单击项目并选择属性
  • 导航到配置属性>C/C++>高级
  • 最后,只需将4996放入禁用特定警告,然后单击应用确定
  • 注意:我更喜欢编码方式,如果你不喜欢,最好学一学 在visual studio中编程或为 你的图书馆


    当我更改例如inet\u ntoa->inet\u ntop时,仍然会出现一个错误,即新替换的命令未定义。我该在哪里定义它?@Dean的意思是你仍然会犯同样的错误?如果是这样,请使用Ctrl+Shift+F并在解决方案中搜索所有源文件,以查找
    gethostname
    inet\u addr
    inet\u ntoa
    GetVersionExW
    GetVersion
    。另外,请确保重新生成了代码Ctrl+F7。感谢您的提示,尝试仅替换一个代码,但仍然出现错误1错误C3861:“inet\u ntop”:找不到标识符\src\core\MuninNodeServer。cpp@Dean请查看我在更换每个功能时提供的链接。对于
    inet\u ntop
    您需要在Ws2\u 32.lib/dll中包含ws2tcpp.h和link。对于
    GetVersion
    GetVersionEx
    ,请参阅stackoverflow线程。我认为您的答案不完整,您只需给出一个忽略警告的解决方案(我知道问题不清楚)。问题可能出在其他地方:例如,使用更新版本的lib(他说他遵循了建议,但不起作用)。但这是我的看法。请编辑您的答案,删除一些粗体字,以便更容易阅读/理解。很抱歉..我编辑答案是为了更清晰更多信息: