Visual Studio 2015 不会禁止显示错误 C4996

Visual Studio 2015 won't suppress error C4996

本文关键字:禁止显示 错误 C4996 Studio 2015 Visual      更新时间:2023-10-16

Visual Studio 2015社区版在调试中编译时会出现以下错误,但在发行版中编译时不会出现:

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'

我能够将这个错误的来源追溯到我用来编写位图图像的第三方库的第214行和第242行。我不完全理解这些部分发生了什么,所以我宁愿不去惹它。


我正在尝试禁用此错误,但Visual Studio不允许。我已经尝试了文档中、StackOverflow或其他地方建议的以下解决方案:

  • 将CCD_ 1添加到";禁用特定警告";项目设置中的字段>配置属性>C/C++>高级
  • 将CCD_ 2添加到";命令参数"项目设置中的字段>配置属性>调试
  • 在有问题的文件顶部和/或有问题的函数上方添加#pragma warning (disable : 4996)
  • _SCL_SECURE_NO_WARNINGS_SCL_NONSTDC_NO_WARNINGS_SCL_OBSOLETE_NO_WARNINGS_SCL_SECURE_NO_WARNINGS_GLOBAL及其组合添加到";预处理器定义";项目设置中的字段>配置属性>C/C++>预处理器
  • 使用#define指令将上一个解决方案中的定义添加到有问题的文件的顶部
  • 将来自先前解决方案但前缀为CCD_ 9或CCD_;命令参数"字段

但这些都不能解决我的问题。


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

定义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