C++ 为什么Visual Studio 2013在C4996上出现错误?

C++ 为什么Visual Studio 2013在C4996上出现错误?,c++,visual-studio,visual-studio-2013,C++,Visual Studio,Visual Studio 2013,在以前版本的VisualStudio中,使用诸如_sleep或strncpy之类的函数只会输出一个警告。在最新版本中,突然出现了一个错误: 错误C4996:“_sleep”:此函数或变量已被取代 通过更新的库或操作系统功能。考虑使用 睡觉吧。有关详细信息,请参阅联机帮助 我知道我可以通过在代码的开头添加#pragma warning(disable:4996)来禁用它,但是VS试图强迫我使用其他函数,这让人非常恼火。有没有办法禁用此行为 在您询问之前,“将警告视为错误”已禁用,即使我关闭所有警

在以前版本的VisualStudio中,使用诸如_sleep或strncpy之类的函数只会输出一个警告。在最新版本中,突然出现了一个错误:

错误C4996:“_sleep”:此函数或变量已被取代 通过更新的库或操作系统功能。考虑使用 睡觉吧。有关详细信息,请参阅联机帮助

我知道我可以通过在代码的开头添加
#pragma warning(disable:4996)
来禁用它,但是VS试图强迫我使用其他函数,这让人非常恼火。有没有办法禁用此行为


在您询问之前,“将警告视为错误”已禁用,即使我关闭所有警告,也会显示错误

新项目现在默认启用“SDK检查”,将这些警告视为错误。要禁用它,请转到项目属性->配置属性->常规->SDL检查->编号。

您还可以在C/C++>高级>禁用特定警告中禁用特定警告编号。

项目->项目名称属性->配置属性->C/C++->预处理器->预处理器定义->编辑。。。添加行“CRT\u SECURE\u NO\u警告”

编译我提到的所有源代码:

kmcnamee关于

解决我问题的视频

显然,安全开发生命周期(SDL)建议进行检查,其中包括启用额外的安全代码生成功能和作为错误的额外安全相关警告

解决此问题的步骤是:

1. Go to Project-> "your project name" Properties
2. Under Configuration Properties, go to C/C++
3. Under C/C++, go to Preprocessor 
4. Select Preprocessor Definitions and click on Edit from the dropdown menu
5. In the blank space fill out _CRT_SECURE_NO_WARNINGS

在程序开始时输入:

#pragma warning(disable : 4996)

就是这样。

再加上这一点,
\u CRT\u nonsdc\u NO\u DEPRECATE
在VS2019中为我工作<代码>\u CRT\u SECURE\u NO\u WARNINGS本身并没有为我清除这一点(我已经定义了这两个警告)


与其他答案类似,这可以通过在解决方案资源管理器中右键单击项目,然后转到属性->配置属性->C/C++->预处理器->预处理器定义->编辑。。。然后添加行
\u CRT\u nonsdc\u NO\u DEPRECATE

也可以使用,但它似乎是非标准的。\u CRT\u nonsdc\u NO\u DEPRECATE在VS 2017中对我有效。禁用SDL检查并不能修复我遇到的一些不推荐的Windows API函数的警告,例如。必须禁用警告4996才能修复这些问题。哇,非常感谢问这个问题的人和回答这个问题的人。它修复了2013年OP问题中已经提到的meThis错误。不确定这在2018年如何成为一个答案