Visual Studio 2015不会禁止错误C4996

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio 2015不会禁止错误C4996相关的知识,希望对你有一定的参考价值。

在调试中编译时,Visual Studio 2015 Community Edition会出现以下错误,但在发布时进行编译时则不会:

std::copy::_Unchecked_iterators::_Deprecate': Call to 'std::copy' with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'

我能够将这个错误的来源追溯到this third party library的第214和242行,我正在使用它来编写位图图像。我不完全了解这些部分发生了什么,所以我宁愿不要搞乱它。


我试图禁用此错误,但Visual Studio不会让我。我尝试过以下解决方案,建议使用in the documentation,StackOverflow或其他地方:

  • 4996添加到项目设置>配置属性> C / C ++>高级中的“禁用特定警告”字段。
  • /wd4996添加到“项目设置”>“配置属性”>“调试”中的“命令参数”字段。
  • 在违规文件的顶部和/或违规函数上方添加#pragma warning (disable : 4996)
  • _SCL_SECURE_NO_WARNINGS_SCL_NONSTDC_NO_WARNINGS_SCL_OBSOLETE_NO_WARNINGS_SCL_SECURE_NO_WARNINGS_GLOBAL及其组合添加到项目设置>配置属性> C / C ++>预处理器中的“预处理器定义”字段。
  • 使用#define指令将以前解决方案中的定义添加到违规文件的顶部。
  • 添加以前解决方案中的定义,但前缀为/D-D到“Command Arguments”字段。

但这一切都没有为我解决问题。


可能是Visual Studio始终坚持显示此错误的原因是什么?

答案

define NO_WARN_MBCS_MFC_DEPRECATION

另一答案

禁用警告4996对std :: copy警告没有影响。要禁止显示此警告,请将以下内容放在源文件的顶部:

#define _SECURE_SCL_DEPRECATE 0
#include <algorithm>
另一答案

将_CRT_NONSTDC_NO_WARNINGS添加到预处理器定义。

另一答案

在你的stdafx.h中:

#pragma warning( push )
#pragma warning( disable: 4996)
#include <algorithm>
#pragma warning( pop )

为我工作VS2015更新3

以上是关于Visual Studio 2015不会禁止错误C4996的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015 不会抑制错误 C4996

如何在 Visual Studio 2015 for C 中禁用警告? [复制]

C ++ boost nuget无法打开文件Visual Studio 2015

Visual Studio 2015发布失败

在DLL中包含OpenVDB;将错误与Visual Studio 2015链接

如何在 Visual Studio 2005 中禁止警告 4200?