Avertissements du compilateur Microsoft C/C++ C4000 à C4199
Les articles de cette section décrivent les messages d’avertissement du compilateur Microsoft C/C++ C4000 à C4199.
Important
Les compilateurs et outils de génération Visual Studio peuvent signaler de nombreux types d’erreurs et d’avertissements. Une fois qu’une erreur ou un avertissement a été détecté, les outils de génération peuvent faire des hypothèses sur l’intention du code, et tenter de poursuivre leur tâche, pour signaler un plus grand nombre de problèmes en même temps. Si les outils suivent une hypothèse incorrecte, les erreurs ou avertissements ultérieurs peuvent ne pas s'appliquer à votre projet. Lors de la résolution de problèmes dans votre projet, démarrez toujours par la première erreur ou le premier avertissement signalé et effectuez régulièrement une régénération. Un seul correctif peut permettre d’éliminer de nombreuses erreurs à venir.
Pour obtenir de l’aide sur un message de diagnostic particulier dans Visual Studio, sélectionnez-le dans la fenêtre Sortie, puis appuyez sur la touche F1. Visual Studio ouvre la page de documentation relative à cette erreur, le cas échéant. Vous pouvez également utiliser l’outil de recherche en haut de la page pour rechercher des articles sur des erreurs ou des avertissements spécifiques. Vous pouvez également parcourir la liste des erreurs et des avertissements par outil et par type dans la table des matières de cette page.
Remarque
Les erreurs et les avertissements Visual Studio ne sont pas documentés en totalité. Dans de nombreux cas, le message de diagnostic fournit toutes les informations disponibles. Si vous êtes arrivé sur cette page quand vous avez utilisé F1, et si vous pensez que le message d’erreur ou d’avertissement nécessite une explication supplémentaire, faites-le nous savoir. Vous pouvez utiliser les boutons de commentaires de cette page pour signaler un problème de documentation sur GitHub. Si vous pensez que l’erreur ou l’avertissement est incorrect, ou si vous avez trouvé un autre problème relatif à l’ensemble d’outils, signalez un problème de produit sur le site Developer Community. Vous pouvez également envoyer des commentaires et entrer des bogues dans l’IDE. Dans Visual Studio, accédez à la barre de menus, puis choisissez Aide > Envoyer des commentaires > Signaler un problème, ou envoyez une suggestion via Aide > Envoyer des commentaires > Envoyer une suggestion. Certaines rubriques d’erreur du compilateur qui ne sont pas émises par le compilateur ont été créées et redirigent maintenant vers cette page à la place.
Vous trouverez peut-être une aide supplémentaire sur les erreurs et les avertissements dans les forums de Q&A Microsoft Learn. Vous pouvez également rechercher le numéro d’erreur ou d’avertissement sur le site Developer Community de Visual Studio C++. Vous pouvez également effectuer des recherches sur Stack Overflow pour trouver des solutions.
Pour obtenir des liens vers d’autres ressources d’aide et de communauté, consultez Aide et communauté Visual C++.
Messages d’avertissement
Avertissement | Message |
---|---|
Avertissement du compilateur (niveau 4, non émis) C4001 | extension non standard « commentaire sur une seule ligne » utilisée |
Avertissement du compilateur (niveau 1, erreur) C4002 | trop d’arguments pour l’appel de macro de type fonction « identificateur » |
Avertissement du compilateur (niveau 1, erreur) C4003 | pas assez d’arguments pour l’appel de macro de type fonction « identificateur » |
Avertissement du compilateur (niveau 1) C4005 | « identificateur » : redéfinition de macro |
Avertissement du compilateur (niveau 1) C4006 | #undef attendait un identificateur |
Avertissement du compilateur (niveau 3) C4007 | « fonction » : doit être un « attribut » |
Avertissement du compilateur (niveau 3) C4008 | « fonction » : l’attribut « attribute » ignoré |
Avertissement du compilateur (niveau 1) C4010 | un commentaire sur une seule ligne comporte un caractère de continuation de ligne |
Avertissement du compilateur (niveau 3) C4013 | « fonction » non défini(e) ; supposant qu’extern retournant int |
Avertissement du compilateur (niveau 1) C4015 | « identificateur » : un champ de bits doit avoir intégral comme type |
Avertissement du compilateur (niveau 3) C4018 | « expression » : incompatibilité signée/non signée |
Avertissement du compilateur (niveau 4) C4019 | instruction vide au niveau de la portée globale |
Avertissement du compilateur (niveau 1) C4020 | « fonction » : trop de paramètres réels |
Avertissement du compilateur (niveau 1) C4022 | « fonction » : incompatibilité de pointeur pour le paramètre réel « parameter_number » |
Avertissement du compilateur (niveau 1) C4023 | « fonction » : pointeur basé passé à une fonction non prototypée : « parameter_number » |
Avertissement du compilateur (niveau 1) C4024 | « fonction » : différents types pour le paramètre formel et réel « parameter_number » |
Avertissement du compilateur (niveau 1) C4025 | « fonction » : pointeur based passé à une fonction avec des arguments de variables : « parameter_number » |
Avertissement du compilateur (niveau 1) C4026 | fonction déclarée avec une liste de paramètres formels |
Avertissement du compilateur (niveau 1) C4027 | fonction déclarée sans liste de paramètres formels |
Avertissement du compilateur (niveau 1) C4028 | le paramètre formel parameter_number est différent de la déclaration |
Avertissement du compilateur (niveau 1) C4029 | la déclaration de la liste de paramètres formels est différente de la définition |
Avertissement du compilateur (niveau 1) C4030 | première liste de paramètres formels plus longue que la seconde |
Avertissement du compilateur (niveau 1) C4031 | la seconde liste de paramètres formels plus longue que la première liste |
Avertissement du compilateur (niveau 4) C4032 | le paramètre formel parameter_number a un type différent lorsqu’il est promu |
Avertissement du compilateur (niveau 1) C4033 | « fonction » doit retourner une valeur |
Avertissement du compilateur (niveau 1) C4034 | sizeof retourne 0 |
Avertissement du compilateur (niveau 3) C4035 | « fonction » : aucune valeur de retour |
Avertissement du compilateur (niveau 1) C4036 | 'type' sans nom comme paramètre réel |
Avertissement du compilateur (niveau 1) C4038 | « modifier » : modificateur de classe illégal |
Avertissement du compilateur (niveau 1) C4041 | limite du compilateur : arrêt de la sortie de l’explorateur |
Avertissement du compilateur (niveau 1) C4042 | « identificateur » : a une classe de stockage incorrecte |
Avertissement du compilateur (niveau 1) C4045 | « array » : dépassement des limites d’index du tableau |
Avertissement du compilateur (niveau 1) C4047 | « opérateur » : les niveaux d'indirection de « identificateur1 » et de « identificateur2 » sont différents |
Avertissement du compilateur (niveau 1) C4048 | différents indices de tableau : « identificateur1 » et « identificateur2 » |
Avertissement du compilateur (niveau 1) C4049 | limite du compilateur : arrêt de l'émission du numéro de ligne |
Avertissement du compilateur (niveau 1) C4051 | conversion de type ; perte possible de données |
Avertissement du compilateur (niveaux 1 et 4) C4052 | déclarations de fonction différentes, une seule contient des arguments de variables |
Avertissement du compilateur (niveau 4) C4053 | un opérande Null pour « ?: » |
Avertissement du compilateur (niveau 1) C4055 | « conversion » : du pointeur donnée « type1 » en pointeur fonction « type2 » |
Avertissement du compilateur (niveau 2) C4056 | dépassement d'une opération arithmétique de constante en virgule flottante |
Avertissement du compilateur (niveau 4) C4057 | « opérateur » : « identificateur1 » diffère de « identificateur2 » dans l’indirection vers des types de base légèrement différents |
Avertissement du compilateur (niveau 3, éteint) C4060 | l'instruction switch ne contient aucune étiquette « case » ou « default » |
Avertissement du compilateur (niveau 4, éteint) C4061 | l'énumérateur « identificateur » dans un switch de « l’énumération » enum n'est pas géré explicitement par une étiquette case |
Avertissement du compilateur (niveau 4, éteint) C4062 | « l’identificateur » énumérateur dans un commutateur de enum « l’énumération » n’est pas géré |
Avertissement du compilateur (niveau 4) C4063 | la case « identificateur » n’est pas une valeur valide pour le commutateur enum en tant « qu’énumération » |
Avertissement du compilateur (niveau 4) C4064 | commutation incomplète de enum en tant « qu'énumération » |
Avertissement du compilateur (niveau 3, éteint) C4065 | l’instruction switch contient « default » mais pas d’étiquettes « case » |
Avertissement du compilateur (niveau 3) C4066 | les caractères après le premier caractère d'une constante caractères larges sont ignorés |
Avertissement du compilateur (niveau 1) C4067 | jetons inattendus après la directive du préprocesseur - saut de ligne attendu |
Avertissement du compilateur (niveau 1) C4068 | pragma « identificateur » inconnu |
Avertissement du compilateur C4069 | long double a la même précision que double |
Avertissement du compilateur (niveau 3) C4073 | initialiseurs placés dans la zone d'initialisation d'une bibliothèque |
Avertissement du compilateur (niveau 1) C4074 | initialiseurs placés dans une zone d'initialisation réservée par le compilateur |
Avertissement du compilateur (niveau 1) C4075 | initialiseurs placés dans une zone d'initialisation non reconnue |
Avertissement du compilateur (niveau 1) C4076 | « type_modifier » : ne peut pas être utilisé avec le type « typename » |
Avertissement du compilateur (niveau 1) C4077 | option check_stack inconnue |
Avertissement du compilateur (niveau 1) C4079 | jeton « token » inattendu |
Avertissement du compilateur (niveau 1) C4080 | identificateur attendu pour le nom du segment ; « symbole » trouvé |
Avertissement du compilateur (niveau 1) C4081 | « jeton1 » attendu ; « jeton2 » trouvé |
Avertissement du compilateur (niveau 1) C4083 | « jeton » attendu ; identificateur 'identifier' trouvé |
Avertissement du compilateur (niveau 1) C4085 | le paramètre pragma attendu doit être « on » ou « off » |
Avertissement du compilateur (niveau 1) C4086 | le paramètre pragma attendu doit être '1', '2', '4', '8', ou '16' |
Avertissement du compilateur (niveau 1) C4087 | 'fonction' : déclaré avec une liste de paramètres « void » |
Avertissement du compilateur (niveau 1) C4088 | « fonction » : incompatibilité de pointeur dans le paramètre réel « parameter_number », paramètre formel « parameter_number » |
Avertissement du compilateur (niveau 1) C4089 | « fonction » : différents types dans le paramètre réel « parameter_number », paramètre formel « parameter_number » |
Avertissement du compilateur (niveau 1) C4090 | « opération » : différents qualificateurs « modificateur » |
Avertissement du compilateur (niveaux 1 et 2) C4091 | «mot clé » : ignoré à gauche du « type » lorsqu’aucune variable n’est déclarée |
Avertissement du compilateur (niveau 4) C4092 | sizeof retourne « unsigned long » |
Avertissement du compilateur (niveau 2) C4094 | « jeton » non marqué n’a pas déclaré de symboles |
Avertissement du compilateur (niveau 1) C4096 | « identificateur » : l'interface n'est pas une interface COM ; ne sera pas émise vers IDL |
Avertissement du compilateur (niveau 1) C4097 | le paramètre pragma attendu doit être « restore » ou « off » |
Avertissement du compilateur (niveau 1) C4098 | « fonction » : la fonction « void » retournant une valeur |
Avertissement du compilateur (niveau 2) C4099 | « identificateur » : nom de type d’abord vu à l’aide de « object_type1 » maintenant vu à avec « object_type2 » |
Avertissement du compilateur (niveau 4) C4100 | « identificateur » : paramètre formel non référencé |
Avertissement du compilateur (niveaux 3 et 4) C4101 | « identificateur » : variable locale non référencée |
Avertissement du compilateur (niveau 3) C4102 | « étiquette » : étiquette non référencée |
Avertissement du compilateur (niveau 1) C4103 | alignement modifié après l'ajout de l'en-tête, peut être dû à l'absence de #pragma pack(pop) |
Avertissement du compilateur (niveau 1) C4109 | l’identificateur « identifier » inattendu |
Avertissement du compilateur (niveaux 1 et 4) C4112 | #line nécessite un entier compris entre 1 et « line_count » |
Avertissement du compilateur (niveau 1) C4113 | « identificateur1 » diffère dans les listes de paramètres de « identificateur2 » |
Avertissement du compilateur (niveau 1) C4114 | même qualificateur de type utilisé plusieurs fois |
Avertissement du compilateur (niveaux 1 et 4) C4115 | « type » : définition d’un type nommé dans les parenthèses |
Avertissement du compilateur (niveau 1) C4116 | définition de type sans nom entre parenthèses |
Avertissement du compilateur (niveau 1) C4117 | le nom de macro « name » réservé, « commande » ignorée |
Avertissement du compilateur (niveau 1) C4119 | bases différentes « base1 » et « base2 » spécifiées |
Avertissement du compilateur (niveau 1) C4120 | incompatibilité basée/non basée |
Avertissement du compilateur (niveau 4) C4121 | « symbole » : l'alignement d'un membre était sensible à la compression |
Avertissement du compilateur (niveau 1) C4122 | « fonction » : alloc_text ne peut s’appliquer qu’aux fonctions avec liaison C |
Avertissement du compilateur (niveau 1) C4123 | différentes expressions de base spécifiées |
Avertissement du compilateur (niveau 1) C4124 | __fastcall avec contrôle de pile est inefficace |
Avertissement du compilateur (niveau 4) C4125 | un nombre décimal termine une séquence d’échappement octale |
Avertissement du compilateur (niveau 4) C4127 | l'expression conditionnelle est une constante |
Avertissement du compilateur (niveau 1) C4129 | « caractère » : caractère de séquence d'échappement non reconnu |
Avertissement du compilateur (niveau 4) C4130 | « opérateur » : opération logique sur l’adresse d’une constante de chaîne |
Avertissement du compilateur (niveau 4) C4131 | « fonction » : utilise un déclarateur obsolète |
Avertissement du compilateur (niveau 4) C4132 | « objet » const : un objet const doit être initialisé |
Avertissement du compilateur (niveaux 1 et 3) C4133 | « expression » : types incompatibles – depuis le « type1 » au « type2 » |
Avertissement du compilateur C4137 | « fonction » : aucune valeur de retour d'une fonction en virgule flottante |
Avertissement du compilateur (niveau 1) C4138 | « */ » trouvé à l'extérieur du commentaire |
Avertissement du compilateur (niveau 1, erreur) C4141 | « modificateur » : utilisé plusieurs fois |
Avertissement du compilateur (niveau 1) C4142 | « identificateur » : redéfinition bénigne du type |
Avertissement du compilateur (niveau 1) C4143 | « same_seg » pragma non pris en charge ; utiliser l’allocation __based |
Avertissement du compilateur (niveau 1) C4144 | « expression » : expression relationnelle comme expression de switch |
Avertissement du compilateur (niveau 1) C4145 | « expression1 » : expression relationnelle comme expression de switch ; risque de confusion avec « expression2 » |
Avertissement du compilateur (niveau 2) C4146 | opérateur moins unaire appliqué à un type non signé, le résultat sera non signé |
Avertissement du compilateur (niveau 2) C4150 | suppression de pointeur vers type incomplet « type » ; aucun destructeur appelé |
Avertissement du compilateur (niveau 4) C4152 | extension non standard, conversion pointeur fonction/donnée dans l'expression |
Avertissement du compilateur (niveau 1) C4153 | conversion pointeur fonction/donnée dans l'expression |
Avertissement du compilateur (niveau 1) C4154 | suppression d'une expression de tableau ; conversion en pointeur fournie |
Avertissement du compilateur (niveau 1) C4155 | suppression d'une expression de tableau sans utiliser la forme 'delete' de tableau |
Avertissement du compilateur (niveau 2) C4156 | suppression d'une expression de tableau sans utiliser la forme « suppression » de tableau ; substituée par la forme de tableau |
Avertissement du compilateur (niveau 1) C4157 | pragma ignoré par le compilateur C |
Avertissement du compilateur (niveau 1) C4158 | en supposant #pragma pointers_to_members(full_generality, « inheritance_type » ) |
Avertissement du compilateur (niveau 3) C4159 | #pragma « pragma »(pop,...) : a exécuté un pop sur l'identificateur qui « identifier » a préalablement fait l'objet d'un push |
Avertissement du compilateur (niveau 1) C4160 | #pragma « pragma »(pop,...) : impossible de trouver l'identificateur « identifier » qui a préalablement fait l'objet d'un push |
Avertissement du compilateur (niveau 3) C4161 | #pragma « pragma »(pop...) : plus de pops que d’envois |
Avertissement du compilateur (niveau 1) C4162 | « identificateur » : aucune fonction avec liaison C trouvée |
Avertissement du compilateur (niveau 1) C4163 | « identificateur » : non disponible comme fonction intrinsèque |
Avertissement du compilateur (niveau 1) C4164 | « fonction » : fonction intrinsèque non déclarée |
Avertissement du compilateur (niveau 3, éteint) C4165 | « HRESULT » est converti en « bool » ; êtes-vous sûr que c’est ce que vous voulez ? |
Avertissement du compilateur (niveau 1) C4166 | convention d'appel non conforme pour un constructeur/destructeur |
Avertissement du compilateur (niveau 1) C4167 | « fonction » : uniquement disponible comme fonction intrinsèque |
Avertissement du compilateur (niveau 1) C4168 | limite du compilateur : types de débogueur insuffisants, supprimez la base de données « database » du programme et régénérez-la |
Avertissement du compilateur (niveau 1) C4172 | adresse de retour d’une variable locale ou d’un optional_context temporaire |
Avertissement du compilateur (niveau 1) C4174 | « nom » : non disponible en tant que #pragma component |
Avertissement du compilateur (niveau 1) C4175 | #pragma component(browser, on) : les informations du navigateur doivent initialement être spécifiées sur la ligne de commande |
Avertissement du compilateur (niveau 1) C4176 | « sous-composant » : sous-composant inconnu pour le navigateur #pragma component |
Avertissement du compilateur (niveau 1) C4177 | #pragma « pragma » doit être uniquement utilisé au niveau de la portée globale ou de la portée espace de noms |
Avertissement du compilateur (niveau 1) C4178 | La constante « case constante » est trop grande pour le type de l’expression de switch |
Avertissement du compilateur (niveau 4, non émis) C4179 | « //* » : analysé comme « / » and « /\* » : confusion avec les commentaires standard « // » |
Avertissement du compilateur (niveau 1) C4180 | qualificateur appliqué au type fonction n'a pas de sens ; ignoré |
Avertissement du compilateur C4181 | qualificateur appliqué au type référence : ignoré |
Avertissement du compilateur (niveau 1) C4182 | le niveau d’imbrication #include est nest_count profond ; récursivité infinie possible |
Avertissement du compilateur (niveau 1) C4183 | « identificateur » : type de retour manquant ; fonction membre retournant « int » prise par défaut |
Avertissement du compilateur (niveau 1) C4185 | ignorer l’attribut #import « attribute » |
Avertissement du compilateur (niveau 1) C4186 | # en tant qu’importation de l’attribut « attribute » nécessite des arguments « argument_count » ; ignoré |
Avertissement du compilateur (niveau 1) C4187 | Les attributs #import « attribut1 » et « attribute2 » sont incompatibles ; les deux sont ignorés |
Avertissement du compilateur (niveau 1) C4188 | expression constante non intégrale |
Avertissement du compilateur (niveaux 3 et 4) C4189 | « identifier » : variable locale initialisée mais non référencée |
Avertissement du compilateur (niveau 1) C4190 | « identifier1 » a la liaison C spécifiée, mais retourne l’UDT « identificateur2 » qui est incompatible avec C |
Avertissement du compilateur (niveau 3, éteint) C4191 | « opération » : conversion non sécurisée du « type_of_expression » au « type_required » Effectuer un appel de fonction à l’aide du pointeur résultant peut entraîner l’échec de votre programme |
Avertissement du compilateur (niveau 3) C4192 | exclure automatiquement« identificateur » lors de l’importation de la bibliothèque de types « library » |
Avertissement du compilateur (niveau 3) C4193 | #pragma warning(pop) : aucune correspondance « #pragma warning(push) » |
Avertissement du compilateur (niveau 1) C4194 | #pragma start_map_region ne peut pas être imbriqué ; Ignoré |
Avertissement du compilateur (niveau 1) C4195 | #pragma stop_map_region utilisé sans correspondance #pragma start_map_region ; ignoré |
Avertissement du compilateur (niveau 1) C4196 | « jeton1 » ou « jeton2 » attendu ; trouvé « jeton3 » |
Avertissement du compilateur (niveau 3) C4197 | « type » : l’alignement de niveau volatile supérieur est ignoré |
Avertissement du compilateur (niveau 1, niveau 2, niveau 3 et niveau 4) C4199 | message |
Voir aussi
Erreurs et avertissements du compilateur C/C++ et des outils de génération
Avertissements du compilateur C4000 à C5999