![](/img/trans.png)
[英]Visual Studio 2015 error C4996 'std::_Copy_impl': Function call with parameters that may be unsafe
[英]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始終堅持顯示此錯誤的原因是什么?
禁用警告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.