为什么 Visual Studio 2013 会发出 C4996 错误?

新手上路,请多包涵

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

意外的错误

错误 C4996:“_sleep”:此函数或变量已被较新的库或操作系统功能取代。考虑改用睡眠。详细信息请参见在线帮助。

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

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

原文由 Nikolai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

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

原文由 Nikolai 发布,翻译遵循 CC BY-SA 3.0 许可协议

除此之外, _CRT_NONSTDC_NO_DEPRECATE 在 VS2019 中为我工作。 _CRT_SECURE_NO_WARNINGS 单独并没有为我清除这个(我已经定义了)。

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

原文由 Travis Vroman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题