Quelle est la meilleure façon de désactiver les avertissements générés par l'intermédiaire de l'application _CRT_SECURE_NO_DEPRECATE
qui permet de les réintégrer facilement et de les faire fonctionner dans toutes les versions de Visual Studio ?
Réponses
Trop de publicités?Si vous ne voulez pas polluer votre code source (après tout, cet avertissement n'est présent qu'avec le compilateur Microsoft), ajoutez _CRT_SECURE_NO_WARNINGS
aux paramètres de votre projet via "Projet"->"Propriétés"->"Propriétés de configuration"->"C/C++"->"Préprocesseur"->"Définitions du préprocesseur".
Vous pouvez également le définir juste avant d'inclure un fichier d'en-tête qui génère cet avertissement. Vous devez ajouter quelque chose comme ceci
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
Et juste une petite remarque, assurez-vous de bien comprendre ce que signifie cet avertissement, et peut-être, si vous n'avez pas l'intention d'utiliser d'autres compilateurs que MSVC, envisagez d'utiliser des versions plus sûres des fonctions, par exemple strcpy_s au lieu de strcpy.
Vous pourriez désactiver temporairement les avertissements aux endroits où ils apparaissent en utilisant
#pragma warning(push)
#pragma warning(disable: warning-code) //4996 for _CRT_SECURE_NO_WARNINGS equivalent
// deprecated code here
#pragma warning(pop)
afin de ne pas désactiver tous les avertissements, ce qui peut parfois être dommageable.
Je travaille sur un projet multiplateforme, je ne peux donc pas utiliser la fonction _s et je ne veux pas polluer mon code avec du code spécifique à Visual Studio.
ma solution est de désactiver l'avertissement 4996 sur le projet visual studio. allez dans Projet -> Propriétés -> Propriétés de configuration -> C/C++ -> Avancé -> Désactiver l'avertissement spécifique ajouter la valeur 4996.
si vous utilisez aussi la bibliothèque mfc et/ou atl (pas mon cas) définissez avant include mfc _AFX_SECURE_NO_DEPRECATE et avant include atl _ATL_SECURE_NO_DEPRECATE.
J'utilise cette solution dans Visual Studio 2003 et 2005.
p.s. si vous n'utilisez que Visual Studio, les surcharges de modèles sécurisés pourraient être une bonne solution.
Vous pouvez également utiliser le Surcharges de modèles sécurisés ils vous aideront à remplacer les appels non sécurisés par des appels sécurisés partout où il est possible de déduire facilement la taille du tampon (tableaux statiques).
Il suffit d'ajouter ce qui suit :
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
Corrigez ensuite les avertissements restants à la main, en utilisant les fonctions _s.
Combinaison de la réponse de @[macbirdie] et @[Adrian Borchardt]. Ce qui s'avère très utile en environnement de production (ne pas perturber l'avertissement existant précédemment, notamment lors de la compilation multiplateforme).
#if (_MSC_VER >= 1400) // Check MSC version
#pragma warning(push)
#pragma warning(disable: 4996) // Disable deprecation
#endif
//... // ...
strcat(base, cat); // Sample depreciated code
//... // ...
#if (_MSC_VER >= 1400) // Check MSC version
#pragma warning(pop) // Renable previous depreciations
#endif
- Réponses précédentes
- Plus de réponses