2013-12-07 10 views
38

Nelle versioni precedenti di Visual Studio che utilizzano funzioni come _sleep o strncpy emette solo un avviso. Nella versione più recente, è improvvisamente un errore:Perché l'errore di Visual Studio 2013 su C4996?

unexpected error

so che posso disabilitare aggiungendo #pragma warning(disable: 4996) all'inizio del codice, ma è estremamente fastidioso che VS sta cercando di costringermi a usare altre funzioni . C'è un modo per disabilitare questo comportamento?

Prima di chiedere, "Considera gli avvisi come errori" è disabilitato, ed errori anche se spengo tutti gli avvisi!

+0

possibile duplicato di [Errore C4996 ricevuto durante la compilazione di sqlite.c in Visual Studio 2013] (http://stackoverflow.com/questions/20031597/error-c4996-received-when-compiling-sqlite-c-in-visual -studio-2013) – dns

+0

Puoi anche usare [stdext :: checked_array_iterator] (http://stackoverflow.com/questions/3598257/visual-c-how-is-checked-array-iterator-useful), ma sembra essere non standard. – jliv902

risposta

54

Apparentemente nuovi progetti abilitano "Controllo SDK" per impostazione predefinita ora, che tratta questi avvisi come errori. Per disabilitarlo, vai alle proprietà del progetto -> Proprietà di configurazione -> C/C++ -> Generale -> Controlli SDL -> No.

+1

La disattivazione dei controlli SDL non ha corretto l'avviso per alcune funzioni API di Windows obsolete in cui mi sono imbattuto, come ['GetVersionEx'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451.aspx). Doveva disabilitare l'avvertimento 4996 appositamente per sistemare quelli. –

4

Puoi anche disabilitare specifici numeri di avviso in C/C++> Avanzate> Disabilita avvisi specifici.

0

Progetto -> Proprietà PROJECT_NAME -> Proprietà di configurazione -> C/C++ -> preprocessore -> Definizioni preprocessore -> Modifica ... aggiungi linea _CRT_SECURE_NO_WARNINGS

0

Compilare tutte le fonti che ho di cui:

Remove secure warnings (_CRT_SECURE_NO_WARNINGS) from projects by default in Visual Studio risposta

di kmcnamee su How to use use _CRT_SECURE_NO_WARNINGS

il video che ha risolto il mio problema. https://www.youtube.com/watch?v=qWxGZLjwKL0

A quanto pare, i controlli di SDL (Security Development Lifecycle) raccomandati includono l'abilitazione di ulteriori funzioni di generazione di codice sicuro e di avvisi di sicurezza aggiuntivi come errori.

I passaggi per risolvere questo problema sono:

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 
0

inserire all'inizio del programma:

#pragma warning(disable : 4996) 

e il gioco è fatto.

Problemi correlati