簡體   English   中英

Visual Studio 2015不會禁止錯誤C4996

[英]Visual Studio 2015 won't suppress error 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'

我能夠將此錯誤的來源追溯到我用於編寫位圖圖像的第三方庫的第214和242行。 我不完全了解這些部分發生了什么,所以我寧願不要搞亂它。


我正在嘗試禁用此錯誤,但Visual Studio不會讓我。 我已經嘗試了文檔 ,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始終堅持顯示此錯誤的原因是什么?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM