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:strict ou #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