web-dev-qa-db-fra.com

Supprimer les avertissements sécurisés (_CRT_SECURE_NO_WARNINGS) des projets par défaut dans Visual Studio

Existe-t-il un moyen de définir par défaut pour tous les projets la suppression des avertissements sécurisés du précompileur lors de l’utilisation de fonctions telles que scanf (). J'ai trouvé que vous pouvez le faire en ajoutant une ligne dans l'option de projet ou un #define _CRT_SECURE_NO_WARNINGS au début du code.

Je me retrouve souvent à créer de nouveaux projets pour résoudre des concours de programmation et il est vraiment ennuyant (et prend un temps précieux) d'ajouter:

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

Au début du code, ou pour le définir dans les options du précompilateur à chaque fois que je démarre un nouveau projet.

155
Juan Martinez

Marquez tous les projets souhaités dans l'explorateur de solutions.

Appuyez sur Alt-F7 ou faites un clic droit dans l'explorateur de solutions et sélectionnez "Propriétés".

Configurations: Toutes les configurations

Cliquez sur la ligne Preprocessor Definitions pour appeler son éditeur.

Choisissez Modifier ...

Copiez "_CRT_SECURE_NO_WARNINGS" dans la zone blanche Définitions du préprocesseur en haut.

enter image description here

242
user2548100

C’est peut-être parce que je suis encore nouveau sur VS et certainement nouveau sur C, mais la seule chose qui m’ait permis de construire était l’ajout de

#pragma warning(disable:4996)

En haut de mon fichier, cela supprimait l'erreur C4996 que je rencontrais avec sprintf

Un peu ennuyeux mais parfait pour mon tout petit peu de code et de loin le plus facile.

Je lis à ce sujet ici: https://msdn.Microsoft.com/en-us/library/2c8f766e.aspx

70
Shaun314

Pas automatiquement, non. Vous pouvez créer un modèle de projet en tant que BlueWandered suggestion ou créer une feuille de propriétés personnalisée que vous pouvez utiliser pour vos projets actuels et futurs.

  1. Ouvrez le gestionnaire de propriétés (Affichage-> Gestionnaire de propriétés)
  2. Dans le Gestionnaire de propriétés, cliquez avec le bouton droit sur votre projet et sélectionnez "Ajouter une nouvelle feuille de propriétés de projet".
  3. Donnez-lui un nom et créez-le dans un répertoire commun. La feuille de propriétés sera ajoutée à toutes les cibles de construction. 
  4. Cliquez avec le bouton droit sur la nouvelle feuille de propriétés et sélectionnez "Propriétés". Cela ouvrira les propriétés et vous permettra de modifier les paramètres comme vous le feriez si vous les modifiiez pour un projet.
  5. Allez dans "Propriétés communes-> C/C++ -> Préprocesseur"
  6. Modifiez le paramètre "Définitions du préprocesseur" et ajoutez _CRT_SECURE_NO_WARNINGS.
  7. Enregistrez et vous avez terminé.

Maintenant, chaque fois que vous créez un nouveau projet, ajoutez cette feuille de propriétés comme suit ...

  1. Ouvrez le gestionnaire de propriétés (Affichage-> Gestionnaire de propriétés)
  2. Dans le Gestionnaire de propriétés, cliquez avec le bouton droit de la souris sur votre projet et sélectionnez "Ajouter une feuille de propriétés de projet existante".

L'avantage ici est que non seulement vous disposez d'un emplacement unique pour gérer les paramètres communs, mais à chaque fois que vous modifiez les paramètres, ils sont transmis à TOUS les projets qui l'utilisent. C'est pratique si vous avez beaucoup de paramètres comme _CRT_SECURE_NO_WARNINGS ou des bibliothèques comme Boost que vous voulez utiliser dans vos projets.

22
Captain Obvlious

Toutes les solutions ici n'ont pas fonctionné sur mon VS2013, cependant, j'ai placé le #define _CRT_SECURE_NO_WARNINGS dans le fichier stdafx.h juste avant le #pragma once et tous les avertissements ont été supprimés. Remarque: Je code uniquement à des fins de prototypage afin de soutenir mes recherches. Assurez-vous donc de bien comprendre les implications de cette méthode lors de l'écriture de votre code.

J'espère que cela t'aides

20
PDF417

mes deux cents pour VS 2017:

Je peux confirmer que cela fonctionne dans stdafx.h dans les styles suivants:

une)

#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

(J'ai ajouté une autre définition pour les appels réseau MSDN ..) .__ Bien sûr, je préfère un). 

Je peux confirmer que: #define _CRT_SECURE_NO_WARNINGS (sans valeur) NE TRAVAILLE PAS.

PS le vrai point est de mettre ces définit AVANT les déclarations de fonctions, c'est-à-dire avant * .h

10
ingconti

Même si vous pouvez ajouter _CRT_SECURE_NO_WARNINGS aux propriétés de votre projet, le moyen le plus simple consiste à utiliser stdafx.h pour tout type d’avertissement et de désactivation d’erreur, assurez-vous de placer la ligne suivante (et similaire) AVANT

#pragma once

De plus, il n'est pas nécessaire de définir une valeur (c'est-à-dire "1") pour _CRT_SECURE_NO_WARNINGS tant qu'elle est définie. Cela devrait donc ressembler à ceci:

#define _CRT_SECURE_NO_WARNINGS 

#pragma once
0

copiez simplement "_ CRT_SECURE_NO_WARNINGS" et collez-le sur projets-> propriétés-> c/c ++ -> préprocesseur> définitions du préprocesseur cliquez sur ok.it fonctionnera

0
Leninkumar

Si votre projet n'utilise pas stdafx.h, vous pouvez insérer les lignes suivantes en tant que premières lignes de votre fichier .cpp. L'avertissement du compilateur doit disparaître.

#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1

C'est bien d'avoir des commentaires et des lignes vides devant eux.

0
R Sahu