IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Erreur D8021 avec Visual Studio Community


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut Erreur D8021 avec Visual Studio Community
    Bonjour,

    Mon code est vraiment très simple et ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    // Bibliotheques
    //=========================================================================
    #include <stdio.h>
    #include <stdlib.h>
    //=========================================================================
     
    // DIRECTIVES PREPROCESSEURS
    //=========================================================================
    #define TAILLE_STRING 100
    //=========================================================================
     
    // Fonction main (principale = point d'entré du programme)
    //=========================================================================
    int main(void)
    {
    	// DECLARATION DES VARIABLES :
    	char date[TAILLE_STRING];
    	char nom[TAILLE_STRING];
    	char prenom[TAILLE_STRING];
    	char couleur[TAILLE_STRING];
     
    	// ENREGISTREMENT DES INFORMATIONS UTILISATEURS :
    	printf("Donnez les informations suivantes:\n\tDate de naissance : ");
    	scanf("%s", date);
    	printf("\tNom: ");
    	scanf("%s", nom);
    	printf("\tPrenom: ");
    	scanf("%s", prenom);
    	printf("\tCouleur des yeux: ");
    	scanf("%s", couleur);
     
    	// AFFICHAGE INFORMATIONS UTILISATEURS :
    	printf("Vous vous appelez %s %s, vous etes nee le %s et vos yeux sont %s.", prenom, nom, date, couleur);
     
    	return 0;
    }
    Cependant j'ai une erreur apparemment à la ligne 1, voir la P.J.
    Je ne vois vraiment pas ou ce trouve l'erreur dans ce code.
    Pouvez vous m'aider svp ?

    Cordialement Zephyre.
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    L'erreur n'est pas dans le code. C'est une erreur d'un paramètre du compilateur.
    /wdC4966 n'est pas valide. D'après le texte, je pense que le C est en trop.

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Es ce que tu penses que ça peut venir du fait que j'ai désactivé l'erreur C4966 dans mon projet ?
    J'ai tenté de la supprimer mais ça ne règle pas le problème, c'est même pire.
    Ce que je ne comprends pas c'est que l'erreur indiquée D8021 = https://docs.microsoft.com/en-us/cpp...&view=msvc-170

    Et pourtant y a rien dans mon code qui peut suggérer une telle erreur.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    /w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Niveau d’avertissement) lien officiel Microsoft

    /WDnnnn Supprime l’avertissement du compilateur spécifié par nnnn.
    C4966 contient 5 chiffres hexadécimaux


    [command-Line Error D8021] A number greater than 65,534 was specified as a numeric argument.
    65 534 c'est 2^16, soit 2 octets ou 4 chiffres hexadécimaux

    Donc voila, il y a déjà 1 problème sur l’avertissement du compilateur que tu veux supprimer


    Édit Compiler Warning (level 3) C4996 lien officiel Microsoft
    tu as la réponse dans le lien ... et comme l'a dit @dalfab

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Je ne comprends pas pourquoi le compilateur M'EMMERDE avec les warnings C4966 alors que je les aient désactivées !
    J'ai suivie le lien = https://docs.microsoft.com/en-us/cpp...?view=msvc-170
    Voir la capture d'écran en P.J
    Images attachées Images attachées  

  6. #6
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 623
    Points : 1 554
    Points
    1 554
    Par défaut
    Hello,

    Apparemment, tu as mal appliqué ce qui est dit dans le lien

    3. Edit the Disable Specific Warnings property to add 4996
    et pas C4996
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    J'ai suivis vos conseils et mis 4966 et PAS C4966 c'est pire encore, voir la capture d'écran 4966
    Non seulement l'erreur ne disparait pas mais en plus j'ai toutes les autres, voir la capture d'écran error
    J'ai également tenté de mettre les deux c'est à dire 4966 et C4966 séparé par une virgule, mais j'ai toujours l'erreur voir capture D8021.
    Images attachées Images attachées    

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Faudrait lire un peu les documentations et ne pas juste y aller à tâton et espérer qu'on fasse ton travail...
    Il est clairement indique que pour supprimer l'avertissement Cxxx il faut mettre xxxx dans le champ.
    Sur VS on peut aussi supprimer des avertissements dans le code avec pragma. Cette option est aussi disponible sur la MSDN (c'est encore le nom de la doc Microsoft ? bref le lien fourni plus haut).

    M'enfin, pourquoi supprimer un avertissement ?
    Balayer la crasse sous le tapis c'est le meilleur moyen de se planter.
    Un avertissement devrait être corrigé.

    Quant aux dernières erreurs, peut-être que si tu les lisais et les comprenais/traduisais tu pourrais (et franchement devrais imo si tu es vraiment ingénieur) t'en sortir tout seul.
    Si non, alors tu devrais vite améliorer ton anglais parce que le niveau requis est très bas et c'est (quasi) obligatoire pour programmer donc autant s'y mettre enfin.
    La MSDN propose aussi de la traduction automatique qui vaut ce qu'elle vaut mais suffit généralement parce que c'est de l'anglais technique plutôt simple.
    Et en lisant le message tu verras qu'ils indiquent même comment le supprimer.
    Et on te l'a même déjà dit sur ce forum-même...
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Faudrait lire un peu les documentations et ne pas juste y aller à tâton et espérer qu'on fasse ton travail...
    Il est clairement indique que pour supprimer l'avertissement Cxxx il faut mettre xxxx dans le champ.
    Sur VS on peut aussi supprimer des avertissements dans le code avec pragma. Cette option est aussi disponible sur la MSDN (c'est encore le nom de la doc Microsoft ? bref le lien fourni plus haut).
    Comme je ne connais pas grand chose je suis obligé d'y aller à tâton.
    Mais même sur le fond je ne comprends pas l'erreur.
    L'erreur est la suivante =
    [command-Line Error D8021] A number greater than 65,534 was specified as a numeric argument.
    Vous m'avez dit qu'il n'y avait pas d'erreur dans mon code source.
    Ainsi l'erreur ne peut venir que des restrictions du compilateur de VSC.
    Et donc je ne comprends pas cette phrase =
    A number greater than 65,534 was specified as a numeric argument
    A quoi je fournis a numeric argument ? Au compilateur ? Si oui comment ?
    Bref je comprends rien.

    Je ne vais pas m'amuser à mettre des sortes des balises pragma partout ou y a des restrictions du compilateur.
    Je préfère désactiver cette erreur de façon global sur tout le projet. C'est bien plus pratique.


    Citation Envoyé par Bousk Voir le message
    M'enfin, pourquoi supprimer un avertissement ?
    Balayer la crasse sous le tapis c'est le meilleur moyen de se planter.
    Un avertissement devrait être corrigé.
    Sur le principe je suis d'accords.
    Mais pour l'instant mon objectif n'est pas de produire un code performant sécurisé et propre.
    Dans un premier temps c'est de me familiariser avec la syntaxe du langage en codant des programmes les plus simples possibles et de ma familiariser avec l'outil VSC.
    Je pense que maitriser un IDE, en l’occurrence, j'ai choisi VSC, est un atout comme développeur.

    En plus les restrictions du compilateur de VSC se discute pour savoir si c'est une bonne ou au mauvaise chose.
    De mon point de vue il en va de la responsabilité du développeur et on a pas à bloquer la compilation d'un programme pour des warnings.
    Lorsque je codais avec Vim et Gcc au moins ils nous laissent le choix et je trouve cette approche bien mieux pour apprendre que celle qu'a choisi VSC.

    En résumé je ne comprends toujours pas l'erreur.
    Comment alors espérer même avec la meilleur doc du monde résoudre un problème que l'on ne comprends pas ?

    Mais bon de ce que j'ai compris j'ai suivi ce que dit la doc ci-dessous :
    Turn off the warning for a project in Visual Studio
    To turn off the warning for an entire project in the Visual Studio IDE:
    Open the Property Pages dialog for your project. For information on how to use the Property Pages dialog, see Property Pages.
    Select the Configuration Properties > C/C++ > Advanced property page.
    Edit the Disable Specific Warnings property to add 4996. Choose OK to apply your changes.
    Et pourtant cela ne fonctionne pas.

  10. #10
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    J'ai essayé de compiler ton code sous Visual Studio Community pour deviner pourquoi tu veux ôter des warnings.
    Ça génère les avertissements : "error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.". Ça indique que scanf() est une fonction déconseillée car non sure.

    Dans l'avertissement, il y a l'indication de ce qu'il faut faire : ajouter un define de _CRT_SECURE_NO_WARNINGS avant tes includes. Que tu peux faire globalement dans ton projet:
    Nom : crt_secure.png
Affichages : 265
Taille : 20,1 Ko

    Et inutile et surtout déconseillé de désactiver les warnings.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par dalfab Voir le message
    Et inutile et surtout déconseillé de désactiver les warnings.
    C'est 1 truc qui existe chez Microsoft depuis 2006 (à peu près) : avec Visual, il ont déprécié des fonctions de base (printf, fprintf, sprintf, snprint, fscanf, fscanf, sscanf, vscanf, vfscanf, vsscanf, ...) pour mettre leur propre fonctions "sécurisées" XXX_s.
    Si je ne dis pas bêtises, c'est lorsque le résultat est trop grand pour être mis dans la variable : ces fonctions font des vérifications de taille et "s'adaptent" au lieu d'avoir 1 U.B.

    Mais j'ai vu que depuis le C11, ces fonctions ont été ajoutées dans la bibliothèque standard pour être portables.

    printf, fprintf, sprintf, snprintf, printf_s, fprintf_s, sprintf_s, snprintf_sn : documentation cppreference en anglais


    Édit : ces fonctions, ce n'est pas la joie ... comme à l'époque, d'où l'option pour désactiver les avertissements
    That paper is a straight-forward and compelling read of the reasons why the TR-24731 (*_s()) functions have not been widely implemented.

    Key reasons include:
    *) The problem is only spotted once, then fixed, and then the *_s() function is unnecessary.
    *) This makes it very hard to test the *_s() functions, or the code which uses them.
    *) It isn't easy to integrate the new functions into old code (which is where there'd be most benefit).
    *) The functions inherently slow down software with extensive but redundant checking.

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Merci beaucoup, grâce à vous j'ai réussi à compiler ce simple programme.
    Je vais maintenant pouvoir avancer sur les autres petits programmes.

    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 22
    Dernier message: 08/02/2017, 15h21
  2. Mode Plan avec Visual Studio 2015 Community Edition
    Par Pichar dans le forum Visual Studio
    Réponses: 0
    Dernier message: 31/08/2015, 22h43
  3. Windows Media Player erreur avec visual studio/c++ 2012
    Par JPras dans le forum Visual C++
    Réponses: 0
    Dernier message: 16/06/2014, 11h28
  4. Erreurs compilation avec Visual Studio
    Par Twice22 dans le forum Débuter
    Réponses: 8
    Dernier message: 06/03/2013, 12h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo