C’è un modo per impostare di default per tutti i progetti rimuovendo gli avvisi sicuri del precompilatore che si presentano quando si usano funzioni come scanf (). Ho scoperto che puoi farlo aggiungendo una linea nell’opzione di progetto o un #define _CRT_SECURE_NO_WARNINGS
all’inizio del codice.
Mi trovo ripetutamente a creare nuovi progetti per risolvere contest di programmazione ed è davvero fastidioso (e richiede tempo prezioso) per aggiungere:
#ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif
All’inizio del codice o per impostarlo nelle opzioni del precompilatore ogni volta che avvio un nuovo progetto.
Segna tutti i progetti desiderati in Solution Explorer.
Premi Alt-F7 o fai clic destro in Solution Explorer e seleziona “Proprietà”
Configurazioni: tutte le configurazioni
Fare clic sulla riga Definizioni preprocessore per richiamare il relativo editor
Scegli Modifica …
Copia “_CRT_SECURE_NO_WARNINGS” nella casella bianca Preprocessore Definizioni in alto.
Può essere perché sono ancora nuovo per VS e sicuramente nuovo per C, ma l’unica cosa che mi ha permesso di build è stata l’aggiunta
#pragma warning(disable:4996)
Nella parte superiore del mio file, questo sopprimeva l’errore C4996 che stavo ottenendo con sprintf
Un po ‘fastidioso ma perfetto per il mio piccolo codice e di gran lunga il più semplice.
Ho letto su di esso qui: https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
Non automaticamente, no. È ansible creare un modello di progetto come suggerito da BlueWandered o creare una finestra delle proprietà personalizzata che è ansible utilizzare per i progetti correnti e per tutti i progetti futuri.
_CRT_SECURE_NO_WARNINGS
. Ora ogni volta che crei un nuovo progetto, aggiungi questa finestra delle proprietà in questo modo …
Il vantaggio qui è che non solo ottieni un posto unico per gestire le impostazioni comuni, ma ogni volta che cambi le impostazioni vengono propagate a TUTTI i progetti che lo utilizzano. Questo è utile se hai molte impostazioni come _CRT_SECURE_NO_WARNINGS
o librerie come Boost che vuoi usare nei tuoi progetti.
Tutte le soluzioni qui non hanno funzionato sul mio VS2013, tuttavia ho messo #define _CRT_SECURE_NO_WARNINGS
nello stdafx.h poco prima di #pragma once
e tutti gli avvertimenti sono stati soppressi. Nota: codifico solo a scopi di prototipazione per supportare la mia ricerca quindi assicurati di comprendere le implicazioni di questo metodo quando scrivi il tuo codice.
Spero che questo ti aiuti
i miei due centesimi per VS 2017:
Posso confermare che funziona in stdafx.h sia in questi stili:
un)
#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #define _WINSOCK_DEPRECATED_NO_WARNINGS 1
b)
#define _CRT_SECURE_NO_WARNINGS 1 #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #pragma once
(Ho aggiunto un altro definire per le chiamate di rete MSDN ..) Naturalmente preferisco a).
Posso confermare che: #define _CRT_SECURE_NO_WARNINGS (senza valore) NON FUNZIONA.
PS il vero punto è mettere queste definizioni PRIMA delle dichiarazioni di funzioni, cioè prima di * .h