在之前版本的Visual Studio中,使用_sleep或者strncpy等函數只會輸出警告。在最新的版本中,這是突然的錯誤:爲什麼C4996上的Visual Studio 2013錯誤?
我知道我可以在代碼的開頭添加#pragma warning(disable: 4996)
禁用它,但它是非常惱人的是VS正試圖強迫我使用其他功能。有什麼辦法可以禁用這種行爲嗎?
在您提出問題之前,「將警告視爲錯誤」已禁用,即使我關閉所有警告也會出錯!
在之前版本的Visual Studio中,使用_sleep或者strncpy等函數只會輸出警告。在最新的版本中,這是突然的錯誤:爲什麼C4996上的Visual Studio 2013錯誤?
我知道我可以在代碼的開頭添加#pragma warning(disable: 4996)
禁用它,但它是非常惱人的是VS正試圖強迫我使用其他功能。有什麼辦法可以禁用這種行爲嗎?
在您提出問題之前,「將警告視爲錯誤」已禁用,即使我關閉所有警告也會出錯!
顯然,新項目現在默認啓用「SDK檢查」,這會將這些警告視爲錯誤。要禁用它,請轉至項目屬性 - >配置屬性 - > C/C++ - >常規 - > SDL檢查 - >編號
禁用SDL檢查並未解決我遇到的一些不贊成使用的Windows API函數的警告,如['GetVersionEx'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451.aspx )。必須禁用警告4996專門解決這些問題。 –
您還可以在C/C++>高級>禁用特定警告中禁用特定的警告編號。
項目 - > PROJECT_NAME屬性 - >配置屬性 - > C/C++ - >預處理器 - >預處理定義 - >編輯...添加一行_CRT_SECURE_NO_WARNINGS
編譯我所提到的所有來源:
Remove secure warnings (_CRT_SECURE_NO_WARNINGS) from projects by default in Visual Studio
kmcnamee的對解決我的問題How to use use _CRT_SECURE_NO_WARNINGS
視頻的答案。 https://www.youtube.com/watch?v=qWxGZLjwKL0
顯然,安全開發生命週期(SDL)建議進行檢查,其中包括啓用額外的安全代碼生成功能和額外的安全相關警告作爲錯誤。
來解決這個問題的步驟如下:
1. Go to Project-> "your project name" Properties
2. Under Configuration Properties, go to C/C++
3. Under C/C++, go to Preprocessor
4. Select Preprocessor Definitions and click on Edit from the dropdown menu
5. In the blank space fill out _CRT_SECURE_NO_WARNINGS
進入在節目的開頭:
#pragma warning(disable : 4996)
,就是這樣。
[Visual Studio 2013中編譯sqlite.c時收到的錯誤C4996]的可能重複(http://stackoverflow.com/questions/20031597/error-c4996-received-when-compiling-sqlite-c-in-visual -studio-2013) – dns
你也可以使用[stdext :: checked_array_iterator](http://stackoverflow.com/questions/3598257/visual-c-how-is-checked-array-iterator-useful),但它似乎爲非標準。 – jliv902