Come utilizzare _CRT_SECURE_NO_WARNINGS

Ho compilato un errore nella mia semplice applicazione della finestra MFC generata dalla procedura guidata con diverse righe di codice:

errore C4996: ‘strncpy’: questa funzione o variabile potrebbe non essere sicura. Considera invece l’uso di strncpy_s. Per disabilitare la deprecazione, utilizzare _CRT_SECURE_NO_WARNINGS . Vedere la guida in linea per i dettagli.

Ho impostato Configuration Properties>>C/C++>>Preporocessor>>Preprocessor Definitions>> _CRT_NONSTDC_NO_WARNINGS

Ma questo non aiuta. Ho un altro progetto molto vicino che genera solo avvisi in questo posto e non ha alcuna definizione _CRT_NONSTDC_NO_WARNINGS .

L’unica differenza tra i progetti è diverse opzioni nella procedura guidata.

Perché _CRT_NONSTDC_NO_WARNINGS non aiuta nel primo progetto e perché il secondo progetto viene compilato senza problemi senza questa definizione?

Aggiungi di

Proprietà di configurazione >> C / C ++ >> Preporocessor >> Definizioni del preprocessore >> _CRT_SECURE_NO_WARNINGS

Sotto “Progetto -> Proprietà -> C / C ++ -> Preprocessore -> Definizioni del preprocessore” aggiungi _CRT_SECURE_NO_WARNINGS

Se sei in Visual Studio 2012 o versione successiva, questa ha un’impostazione aggiuntiva ‘Controlli SDL’ in Pagine delle proprietà -> C / C ++ -> Generale

Controlli di sicurezza addizionali per lo sviluppo del ciclo di vita (SDL); include l’abilitazione di ulteriori funzioni di generazione sicura del codice e di avvertenze aggiuntive rilevanti per la sicurezza come errori.

Il valore predefinito è SI – Per una ragione, IE dovresti usare la versione sicura di strncpy. Se cambi questo a NO, non riceverai un errore quando utilizzi la versione non sicura.

SDL controlla vs vs2012 e versioni successive