Partager via


Avertissements du compilateur Microsoft C/C++ C4800 à C4999

Les articles de cette section décrivent les messages d’avertissement du compilateur Microsoft C/C++ C4800 à C4999.

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, éteint) C4800 Conversion implicite de «type» en bool. Perte d’informations possible
Avertissement du compilateur C4801 Le retour par référence n'est pas vérifiable : message
Avertissement du compilateur (niveau 1) C4803 « méthode » : la méthode raise a une classe de stockage différente de celle de l'événement, « événement »
Avertissement du compilateur (niveau 1) C4804 « opération » : utilisation risquée du type « bool » dans l'opération
Avertissement du compilateur (niveau 1) C4805 « opération » : mélange risqué des types « type 1 » et « type2 » dans l’opération
Avertissement du compilateur (niveau 1) C4806 « opération » : opération risquée : aucune valeur de type « type1 » promue en type «type2 » ne peut être égale à la constante donnée
Avertissement du compilateur (niveau 1) C4807 « opération » : mélange risqué de type « type1 » et champ de bits signé de type « type2 »
Avertissement du compilateur (niveau 1) C4808 case « valeur » n'est pas une valeur valide pour la condition switch ou le type « bool »
Avertissement du compilateur (niveau 1) C4809 L'instruction switch a une étiquette « default » ; toutes les étiquettes « case » possibles sont fournies
Avertissement du compilateur (niveau 1) C4810 Valeur de pragma pack(show) == n
Avertissement du compilateur (niveau 1) C4811 La valeur de pragma conform(forScope, show) == valeur
Avertissement du compilateur (niveau 1) C4812 Style de déclaration obsolète : utilisez plutôt « new_syntax »
Avertissement du compilateur (niveau 1) C4813 « function » : une fonction amie d’une classe locale doit avoir été précédemment déclarée
Avertissement du compilateur (niveau 4) C4815 « nom de l’objet » : le tableau de taille zéro dans l'objet stack n'aura pas d'élément (sauf si l'objet est un agrégat initialisé agrégé)
Avertissement du compilateur (niveau 4) C4816 « paramètre » : le paramètre a un tableau de taille zéro qui sera tronqué (sauf si l’objet est passé par référence)
Avertissement du compilateur (niveau 1) C4817 « membre » : utilisation non conforme de « . » pour accéder à ce membre ; compilateur remplacé par « -> »
Avertissement du compilateur (niveau 1) C4819 Le fichier contient un caractère qui ne peut pas être représenté dans la page de codes actuelle (numéro). Enregistrez le fichier au format Unicode pour éviter toute perte de données
Avertissement du compilateur (niveau 4, éteint) C4820 « octets » octets de remplissage ajoutés après construction « nom_membre »
Avertissement du compilateur (niveau 1) C4821 Impossible de déterminer le type d'encodage Unicode, enregistrez le fichier avec la signature (BOM)
Avertissement du compilateur (niveau 1, éteint) C4822 « membre » : la fonction membre de classe locale n’a pas de corps
Avertissement du compilateur (niveau 3) C4823 « fonction » : utilise des pointeurs épinglants, mais la sémantique de déroulement n’est pas activée. Envisagez d’utiliser /EHa
Avertissement du compilateur (niveau 2, éteint) C4826 La conversion de « type1 » en « type2» est de type signe étendu. Cela peut provoquer un comportement inattendu au moment de l'exécution.
Avertissement du compilateur (niveau 3) C4827 Une méthode «ToString» publique avec 0 paramètres doit être marquée comme virtual et override
Avertissement du compilateur (niveau 1) C4828 Le fichier contient un caractère qui débute à l'offset 0x HexOffset et qui est non conforme dans le jeu de caractères source actuel (page de codes page de code).
Avertissement du compilateur (niveau 1) C4829 Paramètres potentiellement incorrects de la fonction main main. Prenez le cas de « int main(Platform::Array<Platform::String^>^ argv) »:
Avertissement du compilateur (niveau 1) C4834 abandon de la valeur de retour de la fonction ayant l'attribut « nodiscard »
Avertissement du compilateur (niveau 1) C4835 « variable » : l'initialiseur des données exportées ne sera pas exécuté tant que le code managé ne sera pas exécuté au préalable dans l'assembly hôte
Avertissement du compilateur (niveau 4, éteint) C4837 trigraphe détecté : « ??caractère » remplacé par «caractère »
Avertissement du compilateur (niveau 1) C4838 la conversion de « type_1 » to «  type_2 », nécessite une conversion restrictive
Avertissement du compilateur (niveau 3) C4839 utilisation non standard de la classe « type » en tant qu'argument d'une fonction variadique
Avertissement du compilateur (niveau 4) C4840 utilisation non portable de la classe « type » en tant qu'argument d'une fonction variadique
Avertissement du compilateur (niveau 4, éteint) C4841 extension non standard utilisée : indicateur de membre composé utilisé dans offsetof
Avertissement du compilateur (niveau 4, éteint) C4842 il n'existe aucune garantie de cohérence du résultat de « offsetof » appliqué à un type utilisant plusieurs héritages entre les différentes mises en production du compilateur
Avertissement du compilateur (niveau 4) C4843 « type1 » : un gestionnaire d'exception de référence à un type tableau ou fonction n'est pas accessible, utilisez « type2  »à la place
Avertissement du compilateur (niveau 1) C4844 « export module module_name; » est désormais la syntaxe préférée pour déclarer une interface de module
Avertissement du compilateur (niveau 4) C4845 « __declspec(no_init_all) » est ignoré si « /d1initall[0|1|2|3] »' n’a pas été spécifié sur la ligne de commande
Avertissement du compilateur (niveau 4) C4846 « valeur »n'est pas un argument valide pour « /d1initall » : indicateur de ligne de commande ignoré
Avertissement du compilateur (niveau 4) C4847 « __declspec(no_init_all) » peut uniquement être appliqué à une fonction, un type de classe ou une variable locale : ignoré
Avertissement du compilateur (niveau 1) C4848 la prise en charge de l'attribut standard « no_unique_address » en C++ version 17 et antérieure est une extension de fournisseur
Avertissement du compilateur (niveau 1) C4849 La clause « clause » OpenMP est ignorée dans la directive « directive »
Avertissement du compilateur (niveau 1, erreur) C4854 le pointeur null déréférencé de liaison à référencer a un comportement indéfini
Avertissement du compilateur (niveau 1, éteint) C4855 la capture implicite de « this » via « [=] » est dépréciée dans « version »
Avertissement du compilateur (niveau 4) C4856 La « valeur » n’est pas un argument valide pour « /d1initAll:FillPattern » : il doit s’agir d’une valeur comprise entre 0 et 255. Indicateur de ligne de commande ignoré
Avertissement du compilateur (niveau 1) C4857 Le mode C++/CLI ne prend pas en charge les versions C++ plus récentes que C++ 17 ; définition du langage sur /std:c++17
Avertissement du compilateur (niveau 1) C4858 abandon de la valeur retournée : nom de la fonction
Avertissement du compilateur (niveau 4) C4859 La « valeur » n’est pas un argument valide pour « /presetWarn » : il doit s’agir d’une valeur décimale > 0. Indicateur de ligne de commande ignoré
Avertissement du compilateur (niveau 4) C4860 « nom d’objet » : compilateur zéro initialisé « nombre » octets de stockage
Avertissement du compilateur (niveau 4) C4861 compilateur zéro octets « nombre » octets de stockage
Avertissement du compilateur (niveau 4) C4866 le compilateur ne peut pas appliquer l'ordre d'évaluation de gauche à droite pour l'appel à nom_opérateur
Avertissement du compilateur (niveau 1, erreur) C4867 « fonction » : liste d'arguments manquante dans l'appel de fonction ; utilisez « appel» pour créer un pointeur vers un membre
Avertissement du compilateur (niveau 4) C4868 « fichier (numéro_ligne) » : le compilateur ne peut pas appliquer l'ordre d'évaluation de gauche à droite dans une liste d'initialisation entre accolades
Avertissement du compilateur (niveau 3) C4869 « nodiscard » peut uniquement être appliqué aux classes, énumérations et fonctions
Avertissement du compilateur (niveau 2) C4872 division par zéro en virgule flottante détectée lors de la compilation du graphique des appels pour concurrency::parallel_for_each à : « emplacement »
Avertissement du compilateur (niveau 1) C4880 cast de « const type_1 » à « type_2 »' : le cast d'un pointeur ou d'une référence peut aboutir à un comportement non défini dans une fonction restreinte amp
Avertissement du compilateur (niveau 4) C4881 le constructeur et/ou le destructeur ne sera pas appelé pour la variable tile_static «nom-variable »
Avertissement du compilateur (niveau 1) C4882 le passage de foncteurs avec opérateurs d'appels non const à concurrency::parallel_for_each est déconseillé
Avertissement du compilateur C4883 « nom fonction » : la taille de la fonction supprime les optimisations
Avertissement du compilateur C4900 Incompatibilité de langage intermédiaire entre « outil1 » version « version1 » et « outil2 » version « version2 »
Avertissement du compilateur (niveau 1, éteint) C4905 cast de littéral de chaîne étendu en « LPSTR »
Avertissement du compilateur (niveau 1, éteint) C4906 cast de littéral de chaîne en « LPWSTR »
Avertissement du compilateur (erreur) C4907 plusieurs conventions d’appel ne peuvent pas être spécifiées ; dernière donnée sera utilisée
Avertissement du compilateur (niveau 1) C4910 « <identificateur> »: __ « declspec(dllexport) » et « extern» sont incompatibles sur une instanciation explicite
Avertissement du compilateur (niveau 1) C4912 « attribute » : comportement indéfini de l’attribut sur un UDT imbriqué
Avertissement du compilateur (niveau 4) C4913 l'opérateur binaire défini par l'utilisateur « , » existe, mais aucune surcharge n'a pu convertir tous les opérandes, opérateur binaire intégré par défaut « , » utilisé
Avertissement du compilateur (niveau 1) C4916 pour avoir un dispid, « description » : doit être présenté(e) par une interface
Avertissement du compilateur (niveau 1, éteint) C4917 « déclarateur » : une interface graphique utilisateur ne peut être associé qu'à une classe, une interface ou un espace de noms
Avertissement du compilateur (niveau 4) C4918 « caractère » : caractère non valdie dans la liste d’optimisation pragma
Avertissement du compilateur (niveau 1) C4920 enum enum-nom membre membre_1=valeur_1 déja vu dans enum enum-nom en tant que membre_2=valeur_2
Avertissement du compilateur (niveau 3) C4921 « description  »' : la valeur d'attribut « attribut » ne doit pas être spécifiée plusieurs fois
Avertissement du compilateur (niveau 1) C4925 « méthode » : la méthode dispinterface ne peut pas être appelée à partir d’un script
Avertissement du compilateur (niveau 1) C4926 « identifier » : symbole déjà défini : attributs ignorés
Avertissement du compilateur (niveau 1) C4927 conversion non conforme ; plusieurs conversions définies par l'utilisateur ont été appliquées implicitement
Avertissement du compilateur (niveau 1, éteint) C4928 initialisation de copie non conforme ; plusieurs conversions définies par l'utilisateur ont été appliquées implicitement
Avertissement du compilateur (niveau 1) C4929 « fichier » : typelibrary contient une union ; qualificateur 'embedded_idl' ignoré
Avertissement du compilateur (niveau 1) C4930 « prototype » : fonction prototypée non appelée (était-ce la définition de variable souhaitée ?)
Avertissement du compilateur (niveau 4, éteint) C4931 bibliothèque de types présumée construite pour des pointeurs « nombre » bits
Avertissement du compilateur (niveau 4) C4932 impossible de distinguer __identifier(identificateur) et __identifier(identificateur)
Avertissement du compilateur (niveau 1) C4934 « __delegate(multicast) » est déconseillé. Utilisez « __delegate » à la place
Avertissement du compilateur (niveau 1) C4935 Spécificateur d’accès à l’assembly modifié à partir de « accès »
Avertissement du compilateur (niveau 1, erreur) C4936 ce __declspec est pris en charge uniquement lorsqu'il est compilé avec /clr ou /clr:pure
Avertissement du compilateur (niveau 4) C4937 impossible de distinguer « texte1 » et « texte2 » comme arguments de « directive »
Avertissement du compilateur (niveau 4) C4938 « var » : la variable de réduction à virgule flottante peut générer des résultats incohérents sous /fp:strictou #pragma fenv_access
Avertissement du compilateur C4939 #pragma vtordisp est déconseillé et sera supprimé dans une version ultérieure de Visual C++
Avertissement du compilateur (niveau 1) C4944 « symbole » : impossible d’importer le symbole de « assembly1 » : « symbole » existe déjà dans la portée acuellle
Avertissement du compilateur (niveau 1) C4945 « symbole » : impossible d’importer le « assembly1 », car « symbol » a déjà été importé à partir d’un autre assembly « assembly2 »
Avertissement du compilateur (niveau 1, éteint) C4946 reinterpret_cast utilisé entre des classes connexes : « classe1» et « classe2 »
Avertissement du compilateur (niveau 1) C4947 « type_ou_membre » : marqué comme obsolète
Avertissement du compilateur (niveau 2) C4948 le type de retour de « accesseur » ne correspond pas au dernier type de paramètre de la méthode setter correspondante
Avertissement du compilateur (niveaux 1 et 4) C4949 pragma « managed » et « unmanaged » n’est significatif qu’une fois compilé avec « /clr[:option] »
Avertissement du compilateur (niveau 1, erreur) C4950 « type_ou_membre » : marqué comme obsolète
Avertissement du compilateur (niveau 1) C4951 « fonction » a été modifié depuis que les données de profil ont été regroupées ; données de profil de fonction non utilisées
Avertissement du compilateur (niveau 1) C4952 « fonction » : aucune donnée de profil trouvée dans la base de données « pgd-file » du programme
Avertissement du compilateur (niveau 1) C4953 « fonction » a été modifié depuis le rassemblement des données de profil ; données de profil non utilisées
Avertissement du compilateur C4954 « fonction »: non profilé (contient l'expression de switch __int64)
Avertissement du compilateur C4955 « importation2 » : importation ignorée ; importation déjà effectuée à partir de « importation1 »
Avertissement du compilateur (niveau 1, erreur) C4956 « type » : ce type n’est pas vérifiable
Avertissement du compilateur (niveau 1, erreur) C4957 « cast » : le cast explicite de « cast_from » en « cast_to » n’est pas vérifiable
Avertissement du compilateur (niveau 1, erreur) C4958 « opération » : l’opération arithmétique de pointeur n’est pas vérifiable
Avertissement du compilateur (niveau 1, erreur) C4959 impossible de définir le type « type » dans /clr:safe, car l'accès à ses membres génère du code non vérifiable
Avertissement du compilateur (niveau 4) C4960 « fonction » est trop grand pour être profilé
Avertissement du compilateur (niveau 1) C4961 Aucune donnée de profil n’a été fusionnée dans « pgd-file »', les optimisations guidées par profil sont désactivées
Avertissement du compilateur (niveau 4, éteint) C4962 « fonction': les optimisations guidées par profil sont désactivées, car elles génèrent des incohérences au niveau des données de profil
Avertissement du compilateur (niveau 1) C4963 « description » : données de profil introuvables ; d'autres options du compilateur ont été utilisées dans la génération instrumentée
Avertissement du compilateur (niveau 1) C4964 Aucune option d'optimisation n'a été spécifiée ; les informations de profil ne seront pas recueillies
Avertissement du compilateur (niveau 1) C4965 boxing implicite de l'entier 0 ; utilisez nullptr ou effectuez un cast explicite
Avertissement du compilateur (niveau 1) C4966 « fonction » a __code_seg annotation avec un nom de segment non pris en charge, annotation ignorée
Avertissement du compilateur C4970 constructeur délégué : objet cible ignoré depuis « type » est statique
Avertissement du compilateur (niveau 1) C4971 L'ordre des arguments: <objet cible>, <fonction cible> du constructeur délégué est déconseillé, utilisez <fonction cible>, <objet cible>
Avertissement du compilateur (niveau 1, erreur) C4972 La modification ou le traitement direct du résultat d'une conversion unboxing comme lvalue est non vérifiable
Avertissement du compilateur (niveau 1) C4973 « symbole» : marqué comme déconseillé
Avertissement du compilateur (niveau 1) C4974 « symbole» : marqué comme déconseillé
Avertissement du compilateur (niveau 1) C4975 le « [modificateur] » modopt a été ignoré pour le paramètre formel « parameter »
Avertissement du compilateur (niveau 1) C4976 valeur « valeur »non valide pour « /W » ; en supposant « 1 »
Avertissement du compilateur (niveau 3) C4981 Warbird : fonction « fonction » marquée comme __forceinline, not inlined, car elle contient une sémantique des exceptions
Avertissement du compilateur (niveau 3) C4983 « /analyze:sarif:hashname » ignoré, car l’argument de « /analyze:log » est un fichier unique plutôt qu’un répertoire
Avertissement du compilateur C4984 « if constexpr » est une extension de langage C++17
Avertissement du compilateur (niveau 4) C4985 « nom symbole » : attributs absents de la déclaration précédente.
Avertissement du compilateur (niveau 4, éteint) C4986 « déclaration » : la spécification d'exception ne correspond pas à la déclaration précédente
Avertissement du compilateur (niveau 4, éteint) C4987 extension non standard utilisée : « throw (...) »
Avertissement du compilateur (niveau 4, éteint) C4988 « variable » : variable déclarée en dehors de la portée classe/fonction
Avertissement du compilateur (niveau 4) C4989 « type » : le type a des définitions en conflit.
Avertissement du compilateur (niveau 3) C4990 Warbird : message
Avertissement du compilateur (niveau 3) C4991 Warbird : fonction « fonction » marquée comme __forceinline non inlined, car le niveau de protection de l'inlinee est supérieur à celui du parent
Avertissement du compilateur (niveau 3) C4992 Warbird : fonction « nom-de-fonction » marquée comme __forceinline non inlined, car elle contient un assembly inline qui ne peut pas être protégé
Avertissement du compilateur (niveau 3) C4995 « fonction » : le nom a été marqué comme #pragma déconseillé
Avertissement du compilateur (niveau 3) C4996 « déclaration-déconseillée » : dépréciation-message (ou « a été déclaré déconseillé »)
Avertissement du compilateur (niveau 1) C4997 « classe » : une coclasse n’implémente pas d’interface COM ou de pseudo-interface
Avertissement du compilateur (niveau 1) C4998 ÉCHEC DE L’ATTENTE : attente(valeur)

Voir aussi

Erreurs et avertissements du compilateur C/C++ et des outils de génération
Avertissements du compilateur C4000 à C5999