为什么C4996上的Visual Studio 2013错误?

在以前版本的Visual Studio中,使用像_sleep或者strncpy这样的函数只是输出警告。 在最新版本中,突然出现一个错误:

意外的错误

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

在您提出问题之前,“将警告视为错误”已禁用,即使我closures了所有警告,也会出错!

显然,新项目默认情况下会启用“SDK检查”,这会将这些警告视为错误。 要禁用它,请转至项目属性 – >configuration属性 – > C / C ++ – >常规 – > SDL检查 – >否。

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

Project – > project_name属性 – >configuration属性 – > C / C ++ – >预处理器 – >预处理器定义 – >编辑…添加行_CRT_SECURE_NO_WARNINGS

汇编我所提到的所有来源:

在Visual Studio中默认从项目中删除安全警告(_CRT_SECURE_NO_WARNINGS)

kmcnamee的答案如何使用_CRT_SECURE_NO_WARNINGS

video,解决了我的问题。 https://www.youtube.com/watch?v=qWxGZLjwKL0

显然,安全开发生命周期(Security Development Lifecycle,SDL)build议进行检查,包括启用额外的安全代码生成function和额外的安全相关警告作为错误。

解决这个问题的步骤是:

 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