【问题标题】:Why does Visual Studio 2013 error on C4996?为什么 C4996 上的 Visual Studio 2013 会出错?
【发布时间】:2013-12-07 23:39:50
【问题描述】:

在以前版本的 Visual Studio 中,使用 _sleep 或 strncpy 等函数只会输出警告。最新版本突然报错:

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

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

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

【问题讨论】:

标签: c++ visual-studio visual-studio-2013


【解决方案1】:

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

【讨论】:

  • 禁用 SDL 检查并不能解决我遇到的一些已弃用的 Windows API 函数的警告,例如 GetVersionEx。必须专门禁用警告 4996 来解决这些问题。
  • 哇,非常感谢提出这个问题的人和回答的人。它为我修复了错误
【解决方案2】:

在程序开头输入:

#pragma warning(disable : 4996)

就是这样。

【讨论】:

  • 这在 2013 年 OP 的问题中已经提到过。不确定这在 2018 年如何成为答案
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    补充一点,_CRT_NONSTDC_NO_DEPRECATE 在 VS2019 中为我工作。 _CRT_SECURE_NO_WARNINGS 单独并没有为我清除这个(我已经定义了)。

    与其他答案类似,这可以通过在解决方案资源管理器中右键单击项目来添加,然后转到 Properties->Configuration Properties->C/C++->Preprocessor->Preprocessor Definitions->Edit... 然后添加行_CRT_NONSTDC_NO_DEPRECATE

    【讨论】:

      【解决方案5】:

      项目 -> 项目名称属性 -> 配置属性 -> C/C++ -> 预处理器 -> 预处理器定义 -> 编辑...添加行 _CRT_SECURE_NO_WARNINGS

      【讨论】:

        【解决方案6】:

        编译我提到的所有来源:

        Remove secure warnings (_CRT_SECURE_NO_WARNINGS) from projects by default in Visual Studio

        kmcnamee 对How to use use _CRT_SECURE_NO_WARNINGS的回答

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

        显然,安全开发生命周期 (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
        

        【讨论】:

          猜你喜欢
          • 2017-07-13
          • 2013-12-25
          • 1970-01-01
          • 2013-11-30
          • 2013-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-14
          相关资源
          最近更新 更多