Pages de propriétés C/C++

Les pages de propriétés suivantes se trouvent sous Projet>Propriétés>Propriétés de configuration>C/C++ :

Propriétés générales C/C++

Autres répertoires Include

Spécifie un ou plusieurs répertoires à ajouter au chemin include. Séparez les répertoires par des points-virgules (;) s’il y en a plusieurs. Définit l'option du compilateur /I(Dossiers d'inclusion supplémentaires).

Répertoires #using supplémentaires

Spécifie un ou plusieurs répertoires à rechercher pour résoudre les noms passés à la directive #using. Séparez les répertoires avec des points-virgules (;) si vous ajoutez plusieurs répertoires. Définit l’option du /AI compilateur.

Répertoires BMI supplémentaires

Spécifie un ou plusieurs répertoires à rechercher pour résoudre les noms passés à une directive import. Séparez les répertoires avec des points-virgules (;) si vous ajoutez plusieurs répertoires. Définit l’option du /ifcSearchDir[path] compilateur.

Dépendances de module supplémentaires

Spécifie un ou plusieurs modules à utiliser pour résoudre les noms passés à une directive import. Séparez les répertoires avec des points-virgules (;) si vous ajoutez plusieurs répertoires. Définit l’option du /reference compilateur.

Dépendances d’unité d’en-tête supplémentaires

Spécifie une ou plusieurs unités d’en-tête à utiliser pour résoudre les noms fournis à une directive d’en-tête import. Séparez les répertoires avec des points-virgules (;) si vous ajoutez plusieurs répertoires. Définit l’option du /headerUnit compilateur.

Analyser les sources pour les dépendances de modules

Lorsque cette propriété est définie sur Oui, le compilateur analyse toutes les sources C++, pas seulement les sources d’interface de module et d’unité d’en-tête, pour les dépendances des unités de module et d’en-tête. Le système de génération génère le graphique des dépendances complètes, ce qui garantit que tous les modules et unités d’en-tête importés sont générés avant de compiler les fichiers qui en dépendent. Lorsque Analyser les sources à la recherche de dépendances de module et Traduire les inclusions en importations sont tous deux définis sur Oui, tout fichier d’en-tête spécifié dans un fichier header-units.json situé dans le même répertoire que le fichier d’en-tête est compilé en tant qu’unité d’en-tête.

Les fichiers qui ont l’extension .ixx, ainsi que les fichiers dont la propriété File properties>C/C++>Advanced>Compile As est définie sur Compile as C++ Header Unit (/exportHeader), sont toujours analysés.

Les fichiers qui ont l'extension .ixx, et les fichiers qui ont leurs propriétés de fichier>C/C++> paramètre Compiler comme défini sur Compiler comme unité d'en-tête C++ (/exportHeader), sont toujours analysés.

Traduire les éléments inclus dans les importations

Lorsque cette propriété est définie sur Oui, le compilateur traite une #include directive comme une import directive si certaines conditions sont remplies : le fichier d’en-tête est spécifié dans un header-units.json fichier dans le même répertoire et une unité d’en-tête compilée (un .ifc fichier) est disponible pour le fichier d’en-tête. Sinon, le fichier d’en-tête est traité comme un fichier normal #include. Le header-units.json fichier est utilisé pour générer des unités d’en-tête pour chacune #include sans duplication de symboles. Lorsque Traduire les inclusions en importations et Analyser les sources pour détecter les dépendances de module sont tous deux définis sur Oui, le compilateur détecte automatiquement tous les fichiers d’en-tête qui peuvent être compilés en unités d’en-tête. Cette propriété définit l’option du /translateInclude compilateur.

Format des informations de débogage

Indique le type d'informations de débogage générées par le compilateur. Cette propriété nécessite des paramètres compatibles de l’éditeur de liens. Définit /Z7les options du compilateur /Zi/ZI(format d’informations de débogage)..

Choix

  • Aucun (None) : ne produit aucune information de débogage. La compilation peut donc être plus rapide.
  • Compatible C7 (OldStyle) : produit des fichiers objet qui contiennent des informations de débogage symboliques complètes. Aucun fichier PDB n’est généré.
  • Base de données de programme (ProgramDatabase) : produit une base de données de programme (PDB) qui contient des informations de type et des informations de débogage symboliques à utiliser avec le débogueur. Les informations de débogage symboliques incluent les noms et les types de variables et de fonctions, ainsi que les numéros de ligne.
  • Program Database for Edit And Continue (EditAndContinue) : produit une base de données de programme, comme décrit précédemment, dans un format qui prend en charge la fonctionnalité Modifier et Continuer .

Assistance pour le débogage de Just My Code

Ajoute le code nécessaire pour activer du débogage Just My Code dans cette unité de compilation. Définit /JMC.

Prise en charge de C++ pour le débogage dynamique

(Aperçu) Définit l’indicateur /dynamicdeopt du compilateur afin d’activer le débogage dynamique C++. Placez des points d’arrêt désoptimisés et exécutez le code pas à pas à n’importe quel endroit grâce à la désoptimisation des fonctions à la demande. Utilisez ce mode pour déboguer du code optimisé.

Prise en charge du Common Language Runtime

Utilisez le service runtime .NET. Ce commutateur n’est pas compatible avec d’autres commutateurs. Pour plus d’informations, consultez la documentation sur la /clr famille de commutateurs.

Choix

  • Aucune prise en charge du runtime d’exécution du langage commun - Aucune prise en charge du runtime d’exécution du langage commun.
  • Support d'exécution du langage commun - Crée des métadonnées pour votre application qui peuvent être consommées par d’autres applications CLR. Permet également à votre application de consommer des types et des données dans les métadonnées d’autres composants CLR.
  • Compilation pure en MSIL pour le Common Language RunTime - Produit un fichier de sortie uniquement en MSIL sans code exécutable natif, bien qu’il puisse contenir des types natifs compilés en MSIL.
  • Prise en charge sécurisée de l'environnement d'exécution commun MSIL : produit un fichier de sortie uniquement MSIL (aucun code exécutable natif) et vérifiable.

Utiliser l’extension Windows Runtime

Exploitez les extensions de langage de Windows Runtime. Définit /ZW.

Supprimer la bannière de démarrage

Supprime l’affichage de la bannière d’authentification lorsque le compilateur démarre et affiche des messages d’information lors de la compilation.

Niveau d’avertissement

Sélectionnez la rigueur avec laquelle le compilateur doit traiter les erreurs de code. Définit /W0 - /W4.

Choix

  • Désactiver tous les avertissements : le niveau 0 désactive tous les avertissements.
  • Niveau 1 : le niveau 1 affiche des avertissements graves. Le niveau 1 est le niveau d’avertissement par défaut de la ligne de commande.
  • Niveau 2 : le niveau 2 affiche tous les avertissements de niveau 1 et les avertissements moins graves que le niveau 1.
  • Niveau 3 : le niveau 3 affiche tous les avertissements de niveau 2 et tous les autres avertissements recommandés à des fins de production.
  • Niveau 4 : le niveau 4 affiche tous les avertissements de niveau 3 et les avertissements d’information, qui, dans la plupart des cas, peuvent être ignorés en toute sécurité.
  • EnableAllWarnings : active tous les avertissements, y compris ceux désactivés par défaut.

Considérer les avertissements comme des erreurs

Traite les avertissements du compilateur comme des erreurs. Pour un nouveau projet, il peut être préférable d’utiliser /WX dans chaque compilation. Résolvez tous les avertissements pour réduire les défauts de code difficiles à rechercher.

Version d’avertissement

Masquer les avertissements introduits après une version spécifique du compilateur. Définit /Wv:xx[.yy[.zzzzz]].

Format de Diagnostic

Active les diagnostics enrichis, avec les informations de colonne et le contexte source dans les messages de diagnostic.

Choix

  • Caret : fournit des informations de colonne dans le message de diagnostic. Génère également la ligne de code source appropriée avec un trait qui indique la colonne incriminante.
  • Informations sur la colonne : fournit également le numéro de colonne dans la ligne où le diagnostic est émis, le cas échéant.
  • Classique : génère uniquement les messages de diagnostic concis précédents avec le numéro de ligne.

Vérifications SDL

Contrôles supplémentaires recommandés par le cycle de développement sécurisé (SDL). Comprend l’activation de fonctionnalités supplémentaires de génération de code sécurisé et traite des avertissements de sécurité supplémentaires comme des erreurs. Définit /sdl, /sdl-.

Compilation multiprocesseur

Activez la compilation multiprocesseur. Définit l’option du /MP compilateur.

Activer un assainisseur d’adresse

Compile et lie le programme à l’instrumentation AddressSanitizer. Cette propriété prend actuellement en charge les builds cibles x86 et x64. Définit l’option du /fsanitize compilateur.

Activer la prise en charge du fuzzer (expérimental)

Compile les programmes avec le fuzzer. Activez AddressSanitizer pour obtenir les meilleurs résultats. Actuellement disponible pour les builds x86 et x64. Définit /fsanitize=fuzzer.

Propriétés d’optimisation C/C++

Optimisation

Sélectionnez une option pour l’optimisation du code. Sélectionnez Personnalisé pour utiliser des options d’optimisation spécifiques. Définit /Od, /O1, /O2.

Choix

  • Personnalisé : optimisation personnalisée.
  • Désactivé : désactive l’optimisation.
  • Optimisation maximale (taille de faveur) - Équivalent à /Os /Oy /Ob2 /Gs /GF /Gy.
  • Optimisation maximale (favoriser la vitesse) - Équivalent à /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Optimisations (Favoriser la vitesse) - Équivalent à /Oi /Ot /Oy /Ob2.

Expansion des fonctions Inline

Sélectionnez le niveau d’expansion des fonctions inline pour la génération. Définit /Ob.

Choix

  • Par défaut
  • Désactivé : désactive l’extension inline, qui est activée par défaut.
  • Uniquement __inline : développe uniquement les fonctions marquées comme inline, __forceinlineou __inline. Ou, dans une fonction membre C++, définie dans une déclaration de classe.
  • Tout approprié : étend les fonctions marquées comme inline ou __inline, ainsi que toutes les autres fonctions choisies par le compilateur. (L’expansion se produit à la discrétion du compilateur. Cette extension sélectionnée par le compilateur est souvent appelée autoinlining.)

Activer les fonctions intrinsèques

Active les fonctions intrinsèques. L’utilisation de fonctions intrinsèques génère du code plus rapide, mais peut-être plus grand. Définit /Oi.

Favoriser la taille ou la vitesse

Qu’il s’agisse de privilégier la taille du code ou la vitesse du code. Global Optimization doit être activé. Définit /Ot, /Os.

Choix

  • Privilégiez le petit code : réduit la taille des EXEs et des DLL en demandant au compilateur de favoriser la taille par rapport à la vitesse.
  • Favoriser le code rapide : optimise la vitesse des EXEs et des DLL en demandant au compilateur de favoriser la vitesse par rapport à la taille. (Cette valeur est la valeur par défaut lorsque les optimisations sont activées.)
  • Ni l’un ni l’autre : aucune optimisation de la taille et de la vitesse.

Omettre les pointeurs de cadre

Empêche la création des pointeurs de frame sur la pile des appels.

Activer les optimisations fibre-safe

Active des optimisations compatibles avec les fibres pour les applications qui utilisent des fibres afin d’accéder au stockage local des threads. Définit /GT.

Optimisation de l’ensemble du programme

Active les optimisations entre modules en retardant la génération de code jusqu’au moment de l’édition des liens. Nécessite l’option de l’éditeur de liens Génération de code au moment de l’édition de liens. Définit /GL.

Propriétés de préprocesseur C/C++

Définitions de préprocesseur

Définit les symboles de prétraitement pour votre fichier source.

Supprimer les définitions de préprocesseur

Spécifie l’annulation de la définition d’une ou de plusieurs définitions du préprocesseur. Définit /U.

Annuler toutes les définitions du préprocesseur

Annule la définition de toutes les valeurs de préprocesseur précédemment définies. Définit /u.

Ignorer les chemins d’accès Include standard

Empêche le compilateur de rechercher des fichiers include dans les répertoires spécifiés dans les variables d’environnement INCLUDE.

Prétraiter jusqu’à un fichier

Prétraite les fichiers sources C et C++ et écrit la sortie prétraite dans un fichier. Cette option supprime la compilation et ne produit pas de .obj fichier.

Prétraiter pour supprimer les numéros de ligne

Prétraiter sans directives #line.

Conserver les commentaires

Activez cette option pour conserver les commentaires sources C et C++ (// et /* ... */) dans les .i fichiers et d’autres sorties de préprocesseur. Le préprocesseur supprime les commentaires par défaut.

Nécessite la définition d’au moins l’une des options de prétraitement . Définit /C.

Utiliser le préprocesseur conforme standard

Utilisez un préprocesseur conforme standard (/Zc:preprocessor). Actuellement implicite par /std:c11 et versions ultérieures. Pour utiliser le préprocesseur hérité, définissez cette propriété sur Non.

Propriétés de génération de code C/C++

Activer le regroupement de chaînes

Activez cette propriété pour activer le regroupement de chaînes, qui combine des chaînes identiques en une seule copie en lecture seule dans le programme compilé. Cela peut entraîner des programmes plus petits. /O1, /O2et /ZI définissez automatiquement l’option /GF .

Activer la reconstruction minimale

Active la reconstruction minimale, qui détermine s’il faut recompiler les fichiers sources C++ qui incluent des fichiers d’en-tête (.h) contenant des définitions de classes C++ modifiées.

Activer les exceptions C++

Spécifie le modèle de gestion des exceptions à utiliser par le compilateur.

Choix

  • Oui avec les exceptions SEH : modèle de gestion des exceptions qui intercepte les exceptions asynchrones (structurées) et synchrones (C++). Définit /EHa.
  • Oui : le modèle de gestion des exceptions qui intercepte uniquement les exceptions C++ et configure le compilateur pour supposer que extern "C" les fonctions ne lèvent jamais d’exception C++. Définit /EHsc.
  • Oui avec les fonctions Extern C : modèle de gestion des exceptions qui intercepte uniquement les exceptions C++ et configure le compilateur pour supposer que les extern "C" fonctions lèvent une exception. Définit /EHs.
  • Non - Aucune gestion des exceptions.

Vérification de type Plus petit

Permet de vérifier la conversion en types plus petits. Incompatible avec n’importe quel type d’optimisation autre que le débogage. Définit /RTCc.

Vérifications de base à l’exécution

Active les vérifications d’erreurs d’exécution de base. Incompatible avec n’importe quel type d’optimisation autre que le débogage. Définit /RTCs, /RTCu, /RTC1.

Choix

  • Images de pile : active la vérification des erreurs du runtime d’images de pile.
  • Variables non initialisées : signale lorsqu’une variable est utilisée sans avoir été initialisée.
  • Les deux (/RTC1, équiv. à /RTCsu) - Équivalent de /RTCsu.
  • Valeur par défaut - Vérifications d'exécution par défaut

Bibliothèque Runtime

Spécifie une bibliothèque runtime pour la liaison. Définit /MT, /MTd, /MD, /MDd.

Choix

  • Multithread - Amène votre application à utiliser la version multithread statique de la bibliothèque d’exécution.
  • Débogage multithread - Définit : _DEBUG et _MT. Cette option entraîne également le fait que le compilateur place le nom de la bibliothèque LIBCMTD.lib dans le .obj fichier afin que l’éditeur de liens utilise LIBCMTD.lib pour résoudre les symboles externes.
  • DLL multithreadée - Amène votre application à utiliser la version multithreadée spécifique aux DLL de la bibliothèque d’exécution. Définit _MT et _DLL provoque le fait que le compilateur place le nom de la bibliothèque MSVCRT.lib dans le .obj fichier.
  • DLL de débogage multithreadée - Définit _DEBUG, _MT et _DLL, et amène votre application à utiliser la version de débogage multithreadée de la bibliothèque d’exécution, spécifique aux DLL. Le compilateur place également le nom de la bibliothèque MSVCRTD.lib dans le .obj fichier.

Alignement des membres de la structure

Spécifie les limites de 1, 2, 4, 8 ou 16 octets pour l’alignement des membres de struct. Définit /Zp.

Choix

  • 1 octet : regroupe les structures par limites d’un octet. Comme pour /Zp.
  • 2 octets - Emballe les structures sur des frontières de deux octets.
  • 4 octets - Regroupe les structures sur des limites de quatre octets.
  • 8 octets - Structure les données selon des limites de huit octets (par défaut).
  • 16 octets - Aligne les structures sur des limites de seize octets.
  • Valeur par défaut : paramètres d’alignement par défaut .

Spécifie les limites de 1, 2, 4 ou 8 octets pour l’alignement des membres du struct. Définit /Zp.

Choix

  • 1 octet : regroupe les structures par limites d’un octet. Comme pour /Zp.
  • 2 octets - Emballe les structures sur des frontières de deux octets.
  • 4 octets - Regroupe les structures sur des limites de quatre octets.
  • 8 octets - Structure les données selon des limites de huit octets (par défaut).
  • Valeur par défaut : paramètres d’alignement par défaut .

Vérification de la sécurité

Permet de détecter les dépassements de mémoire tampon de pile, que les attaquants peuvent exploiter pour compromettre votre application.

Choix

  • Désactiver la vérification de sécurité - Définit /GS-.
  • Activer la vérification de sécurité - Définit /GS.

Control Flow Guard

Permet de détecter les tentatives de redirection de l’exécution vers des blocs de code non autorisés.

Choix

  • Oui - Activer Control Flow Guard. Définit /guard:cf.
  • Aucun

Activer la liaison au niveau des fonctions

Permet au compilateur d’empaqueter des fonctions individuelles sous la forme de fonctions empaquetées (COMDATs). Nécessaire pour que l’option Modifier et Continuer fonctionne. Définit /Gy.

Activer la génération de code parallèle

Permet au compilateur de générer du code parallèle pour les boucles identifiées à l’aide de #pragma loop(hint_parallel[(n)]) lorsque l’optimisation est activée.

Activer le jeu d’instructions amélioré

Activez l’utilisation d’instructions trouvées sur les processeurs qui prennent en charge les jeux d’instructions améliorés. Par exemple, les améliorations SSE, SSE2, AVX et AVX2 pour IA-32, et les améliorations AVX et AVX2 apportées à x64. /arch:SSE est disponible uniquement pour les builds x86. /arch:SSE2 est disponible pour les builds x86 et x64 et est la valeur par défaut pour les deux architectures. L’utilisation d’instructions améliorées peut être désactivée avec /arch:IA32. Pour plus d'informations, voir /arch (x86), /arch (x64), /arch (ARM64) et /arch (ARM).

Choix

  • Extensions SIMD de streaming (X86) : active les extensions SIMD de streaming. Définit /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) : active les extensions SIMD de streaming 2. Définit /arch:SSE2.
  • Extensions vectorielles avancées (X86/X64) : active les extensions vectorielles avancées. Définit /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) : active les extensions vectorielles avancées 2. Définit /arch:AVX2.
  • Extensions vectorielles avancées 512 (X86/X64) : active les extensions vectorielles avancées 512. Définit /arch:AVX512.
  • Extensions vectorielles avancées AVX10.1 (X86/X64) - Active les extensions vectorielles avancées 10 version 1. Définit /arch:AVX10.1.
  • Advanced Vector Extensions AVX10.2 (X86/X64) :: active Advanced Vector Extensions 10 version 2. Définit /arch:AVX10.2.
  • Extensions de virtualisation (ARM). Active les extensions de virtualisation ARM. Définit /arch:ARMv7VE.
  • Instructions ARM VFPv4 (ARM). Active les instructions ARM VFPv4. Définit /arch:VFPv4.
  • Configuration requise pour l’extension processeur ARMv8.0-A (ARM64). Active les exigences ARMv8.0-A. Définit /arch:arm8.0.
  • Configuration requise pour l’extension processeur ARMv8.1-A (ARM64). Active les exigences ARMv8.1-A. Définit /arch:arm8.1.
  • Configuration requise pour l’extension processeur ARMv8.2-A (ARM64). Active les exigences ARMv8.2-A. Définit /arch:arm8.2.
  • Configuration requise pour l’extension processeur ARMv8.3-A (ARM64). Active les exigences ARMv8.3-A. Définit /arch:arm8.3.
  • Configuration requise pour l’extension processeur ARMv8.4-A (ARM64). Active les exigences ARMv8.4-A. Définit /arch:arm8.4.
  • Configuration requise pour l’extension processeur ARMv8.5-A (ARM64). Active les exigences ARMv8.5-A. Définit /arch:arm8.5.
  • Configuration requise pour l’extension processeur ARMv8.6-A (ARM64). Active les exigences ARMv8.6-A. Définit /arch:arm8.6.
  • Configuration requise pour l’extension processeur ARMv8.7-A (ARM64). Active les exigences ARMv8.7-A. Définit /arch:arm8.7.
  • Configuration requise pour l’extension processeur ARMv8.8-A (ARM64). Active les exigences ARMv8.8-A. Définit /arch:arm8.8.
  • Sans instructions améliorées - Désactive les instructions améliorées pour les versions x86. Définit /arch:IA32.
  • Non défini : ne définit pas explicitement une /arch option.

Activez l’utilisation d’instructions trouvées sur les processeurs qui prennent en charge les jeux d’instructions améliorés. Par exemple, les améliorations SSE, SSE2, AVX et AVX2 pour IA-32, et les améliorations AVX et AVX2 apportées à x64. Actuellement /arch:SSE et /arch:SSE2 sont disponibles uniquement lors de la compilation pour l’architecture x86. Si aucune option n’est spécifiée, le compilateur utilise des instructions trouvées sur les processeurs qui prennent en charge SSE2. L’utilisation d’instructions améliorées peut être désactivée avec /arch:IA32. Pour plus d'informations, voir /arch (x86), /arch (x64), /arch (ARM64) et /arch (ARM).

Choix

  • Extensions SIMD de streaming (X86) : active les extensions SIMD de streaming. Définit /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) : active les extensions SIMD de streaming 2. Définit /arch:SSE2.
  • Extensions vectorielles avancées (X86/X64) : active les extensions vectorielles avancées. Définit /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) : active les extensions vectorielles avancées 2. Définit /arch:AVX2.
  • Extensions vectorielles avancées 512 (X86/X64) : active les extensions vectorielles avancées 512. Définit /arch:AVX512.
  • Extensions vectorielles avancées AVX10.1 (X86/X64) - Active les extensions vectorielles avancées 10 version 1. Définit /arch:AVX10.1.
  • Extensions de virtualisation (ARM). Active les extensions de virtualisation ARM. Définit /arch:ARMv7VE.
  • Instructions ARM VFPv4 (ARM). Active les instructions ARM VFPv4. Définit /arch:VFPv4.
  • Configuration requise pour l’extension processeur ARMv8.0-A (ARM64). Active les exigences ARMv8.0-A. Définit /arch:arm8.0.
  • Configuration requise pour l’extension processeur ARMv8.1-A (ARM64). Active les exigences ARMv8.1-A. Définit /arch:arm8.1.
  • Configuration requise pour l’extension processeur ARMv8.2-A (ARM64). Active les exigences ARMv8.2-A. Définit /arch:arm8.2.
  • Configuration requise pour l’extension processeur ARMv8.3-A (ARM64). Active les exigences ARMv8.3-A. Définit /arch:arm8.3.
  • Configuration requise pour l’extension processeur ARMv8.4-A (ARM64). Active les exigences ARMv8.4-A. Définit /arch:arm8.4.
  • Configuration requise pour l’extension processeur ARMv8.5-A (ARM64). Active les exigences ARMv8.5-A. Définit /arch:arm8.5.
  • Configuration requise pour l’extension processeur ARMv8.6-A (ARM64). Active les exigences ARMv8.6-A. Définit /arch:arm8.6.
  • Configuration requise pour l’extension processeur ARMv8.7-A (ARM64). Active les exigences ARMv8.7-A. Définit /arch:arm8.7.
  • Configuration requise pour l’extension processeur ARMv8.8-A (ARM64). Active les exigences ARMv8.8-A. Définit /arch:arm8.8.
  • Sans instructions améliorées - Désactive les instructions améliorées pour les versions x86. Définit /arch:IA32.
  • Non défini : ne définit pas explicitement une /arch option.

Choix

  • Extensions SIMD pour le streaming - Extensions SIMD pour le streaming. Définit /arch:SSE
  • Streaming SIMD Extensions 2 - Streaming SIMD Extensions 2. Définit /arch:SSE2
  • Extensions vectorielles avancées - Extensions vectorielles avancées. Définit /arch:AVX
  • Extensions vectorielles avancées 2 - Extensions vectorielles avancées 2. Définit /arch:AVX2
  • Aucune instruction améliorée - Aucune instruction améliorée. Définit /arch:IA32
  • Non défini - Non défini .

Activer la longueur du vecteur

Activez le choix de la longueur du vecteur pour /arch:AVX512 et /arch:AVX10.x des indicateurs. Les valeurs autorisées sont de 256 et 512 bits (X86/X64).

Modèle à virgule flottante

Définit le modèle de virgule flottante. Définit /fp:precise, /fp:strict, /fp:fast.

Choix

  • Précision : valeur par défaut. Améliore la cohérence des tests à virgule flottante pour l’égalité et l’inégalité.
  • Strict - Modèle à virgule flottante le plus strict. /fp:strict entraîne la désactivation de fp_contract et l’activation de fenv_access. /fp:except est implicite et peut être désactivé en spécifiant /fp:except-explicitement . Lorsqu’elle est utilisée avec /fp:except-, /fp:strict applique une sémantique à virgule flottante stricte, mais sans respect des événements exceptionnels.
  • Rapide : crée le code le plus rapide dans la plupart des cas.

Activer les exceptions à virgule flottante

Modèle d'exception de virgule flottante fiable. Les exceptions sont levées immédiatement après leur déclenchement. Définit /fp:except.

Créer une image hotpatchable

Lorsque la mise à jour corrective à chaud est activée, le compilateur garantit que la première instruction de chaque fonction est composée de deux octets, comme requis pour cette opération. Définit /hotpatch.

Atténuation du spectre

Mesures d'atténuation de Spectre pour CVE 2017-5753. Définit /Qspectre.

Choix

  • Activé : activez l’atténuation de Spectre pour CVE 2017-5753.
  • Toutes les charges : activez l’atténuation de Spectre sur toutes les charges.
  • Tous les chargements du flux de contrôle - Activer les mesures d’atténuation de Spectre sur les chargements du flux de contrôle.
  • Désactivé : non défini.

Atténuation du spectre

Mesures d'atténuation de Spectre pour CVE 2017-5753. Définit /Qspectre.

Choix

  • Activé : activez l’atténuation de Spectre pour CVE 2017-5753.
  • Désactivé : non défini.

Activer l’atténuation d’Erratum Intel JCC

Atténuation logicielle de l’impact sur les performances provoqué par la mise à jour du microcode Intel JCC erratum. Définit /QIntel-jcc-erratum.

Activer les métadonnées de continuation EH

Génère une liste triée de toutes les cibles de continuation de gestion des exceptions valides pour un binaire, utilisée lors de l’exécution pour la validation RIP. Actuellement disponible pour les builds x64. Définit /guard:ehcont.

Activer les retours signés

Active les retours signés, ce qui permet de détecter et d’empêcher les tentatives de répartition vers des blocs non autorisés de retours de fonction. Actuellement disponible pour les builds ARM64. Définit /guard:signret.

Propriétés du langage C/C++

Désactiver les extensions de langage

Supprime ou active les extensions de langage. Définit /Za.

Traiter WChar_t comme type intégré

Lorsque vous activez cette propriété, le type wchar_t devient un type natif qui est mappé à __wchar_t de la même façon que short est mappé à __int16. /Zc:wchar_t est activé par défaut.

Forcer la conformité dans la portée d’une boucle for

Implémente le comportement C++ standard pour les boucles d’instruction for avec les extensions Microsoft. Définit /Za, /Ze (Désactiver les extensions de langage. /Zc:forScope est activé par défaut.

Supprimer le code et les données non référencés

Lorsque vous activez cette propriété, le compilateur ne génère plus d’informations de symboles pour le code et les données non référencés.

Appliquer les règles de conversion de type

Utilisé pour identifier un type de référence rvalue à la suite d’une opération de cast conformément à la norme C++11.

Activer les informations de type au moment de l’exécution

Ajoute du code pour la vérification des types d’objets C++ au moment de l’exécution (informations sur les types d’exécution ou RTTI). Définit /GR, /GR-.

Ouvrir le support MP

Active les extensions de langage OpenMP 2.0. Définit /openmp.

Norme du langage C++

Détermine la norme de langage C++ appliquée par le compilateur. La valeur par défaut ne définit pas d’option standard. Par conséquent, le compilateur utilise son paramètre C++14 par défaut. Si vous sélectionnez une valeur spécifique, l’option de compilateur correspondante /std est définie.

Choix

  • Par défaut (ISO C++14 Standard)
  • Iso C++14 Standard (/std :c++14)
  • Iso C++17 Standard (/std :c++17)
  • Iso C++20 Standard (/std :c++20)
  • Préversion - Norme ISO C++23 (/std :c++23preview)
  • Version préliminaire - Fonctionnalités du dernier brouillon de travail C++ (/std :c++latest)

Norme du langage C

Détermine la norme de langage C appliquée par le compilateur. La valeur par défaut ne définit pas d’option standard. Par conséquent, le compilateur utilise son paramètre MSVC hérité par défaut. Si vous sélectionnez une valeur spécifique, l’option de compilateur correspondante /std est définie.

Choix

  • Par défaut (Legacy MSVC)
  • Norme ISO C11 (/std :c11)
  • ISO C17 (2018) Standard (/std :c17)
  • Aperçu - Fonctionnalités du dernier brouillon de travail C (/std:clatest)

Mode de conformité

Active ou supprime le mode de conformité. Définit /permissive-.

Activer les modules de bibliothèque standard C++ expérimentaux

Prise en charge expérimentale des modules C++ TS et de la bibliothèque standard.

Générer des modules de bibliothèque ISO C++23 Standard

À compter de Visual Studio 17.6, lorsque cette propriété est activée et que la norme de langage C++ est définie sur /std:c++latest, les projets Microsoft C++ trouvent et génèrent automatiquement les modules de la bibliothèque standard ISO C++23. Cela vous permet de import std ou de import std.compat dans votre code C++.

Propriétés des en-têtes précompilés C/C++

En-tête précompilé

Créer/utiliser un en-tête précompilé

Active la création ou l'utilisation d'un en-tête précompilé pendant la construction. Définit /Yc, /Yu.

Choix

  • Créer : indique au compilateur de créer un fichier d’en-tête précompilé (.pch) qui représente l’état de la compilation à un certain point.
  • Utiliser : indique au compilateur d’utiliser un fichier d’en-tête précompilé (.pch) existant dans la compilation actuelle.
  • Ne pas utiliser d’en-têtes précompilés : n’utilise pas d’en-têtes précompilés.

Fichier d’en-tête précompilé

Spécifie le nom du fichier d’en-tête que le compilateur utilise pour créer ou accéder à un en-tête précompilé. Définit /Yc, /Yu.

Fichier de sortie d’en-tête précompilé

Spécifie le chemin d’accès ou le nom du fichier d’en-tête précompilé généré. Définit /Fp.

Propriétés fichiers de sortie C/C++

Développer la source attribuée

Crée un fichier de liste avec des attributs développés injectés dans le fichier source. Définit /Fx.

Sortie de l’assembleur

Spécifie le contenu du fichier de sortie du langage d’assembly. Définit /FA, /FAc, /FAs, /FAcs.

Choix

  • Aucune description - Aucune description.
  • Liste du code assembleur uniquement - Code assembleur : .asm.
  • Assemblage avec code machine - Code machine et code assembleur : .cod.
  • Assembly avec code source - Code source et code d’assembly : .asm.
  • Assembly, Code machine et source - Assembly, code de l’ordinateur et code source : .cod.

Utiliser Unicode pour la description de l’assembleur

Provoque la création du fichier de sortie au format UTF-8.

Emplacement de la liste ASM

Spécifie le chemin relatif ou le nom du fichier de listage ASM. Il peut s’agir d’un nom de fichier ou de répertoire. Définit /Fa.

Nom du fichier de sortie du module

Emplacement du fichier de sortie du module ou de l’unité d’en-tête (BMI). Il peut s’agir d’un nom de fichier ou de répertoire. Définit /ifcOutput[name].

Nom du fichier dépendances du module

Spécifie le chemin d’accès et/ou le nom du fichier de dépendances de module généré. Définit /scanDependencies[path].

Nom de fichier objet

Spécifie un nom de substitution pour le nom de fichier objet par défaut. Il peut s’agir d’un nom de fichier ou de répertoire. Définit /Fo.

Nom du fichier de base de données du programme

Spécifie un nom pour un fichier PDB généré par le compilateur. Spécifie également le nom de base du fichier IDB généré par le compilateur requis. Il peut s’agir d’un nom de fichier ou de répertoire. Définit /Fd.

Générer des fichiers de documentation XML

Spécifie que le compilateur doit générer des fichiers de commentaires de documentation XML (. XDC). Définit /doc.

Nom du fichier de documentation XML

Spécifie le nom des fichiers de documentation XML générés. Il peut s’agir d’un nom de fichier ou de répertoire. Définit le /doc:<nom.>

Générer un fichier de dépendances sources

Génère un fichier JSON avec la liste de tous les fichiers utilisés par le compilateur pour la compilation de la source. Définit /sourceDependencies.

Nom du fichier de dépendances des sources

Spécifie le chemin d’accès et/ou le nom du fichier de dépendances sources généré. Définit /sourceDependencies[path].

Propriétés des informations de navigation C/C++

Activer Parcourir les informations

Spécifie si le compilateur doit générer un .bsc fichier. Définit /FR.

Parcourir le fichier d’informations

Spécifie un nom facultatif pour le fichier d’informations du navigateur. Définit le /FR<nom.>

Propriétés des fichiers d’inclusion externes C/C++

Considérer les fichiers compris avec des chevrons comme externes

Spécifie s’il faut traiter les fichiers inclus avec des crochets angle comme externes. Définissez cette propriété sur Oui pour définir l’option du /external:anglebrackets compilateur.

Niveau d’avertissement d’en-tête externe

Sélectionnez la manière dont vous souhaitez que le compilateur soit strict sur les erreurs de code dans les en-têtes externes. Cette propriété définit l’option du /external:Wn compilateur. Si cette valeur est définie sur Hériter du niveau d’avertissement du projet ou sa valeur par défaut, d’autres /external options sont ignorées.

Diagnostics de modèle dans les en-têtes externes

Spécifie s’il faut évaluer le niveau d’avertissement sur une chaîne d’instanciation de modèle. Définissez cette propriété sur Oui pour définir l’option du /external:templates- compilateur.

Désactiver l’analyse du code pour les en-têtes externes

Désactive l’analyse du code pour les en-têtes externes. Définit l’option du /analyze:external- compilateur.

Ensemble de règles d’analyse pour les en-têtes externes

Spécifie un remplacement de jeu de règles d’analyse du code pour les en-têtes externes. Si cette propriété n'est pas spécifiée, le paramètre Code Analysis est utilisé. Définit l’option du /analyze:external:ruleset path compilateur.

Propriétés avancées C/C++

Convention d’appel

Sélectionnez la convention d’appel par défaut pour votre application (peut être remplacée par fonction). Définit /Gd, /Gr, /Gz, /Gv.

Choix

  • __cdecl - Spécifie la convention d’appel __cdecl pour toutes les fonctions, à l’exception des fonctions membres C++ marquées __stdcall ou __fastcall.
  • __fastcall - Spécifie la convention d’appel __fastcall pour toutes les fonctions, à l’exception des fonctions membres C++ marquées __cdecl ou __stdcall. Toutes les fonctions __fastcall doivent avoir des prototypes.
  • __stdcall - Spécifie la convention d’appel __stdcall pour toutes les fonctions, à l’exception des fonctions membres C++ marquées __cdecl ou __fastcall. Toutes les fonctions __stdcall doivent avoir des prototypes.
  • __vectorcall - Spécifie la convention d’appel __vectorcall pour toutes les fonctions, à l’exception des fonctions membres C++ marquées __cdecl, __fastcallou __stdcall. Toutes les fonctions __vectorcall doivent avoir des prototypes.

Compiler comme

Sélectionnez une option de langage de compilation pour les fichiers sources. Définit /TC, /TP/interface/internalPartition ou /exportHeader options.

Choix

  • Par défaut : option par défaut.
  • Compiler en tant que code C (/TC) : compilez les fichiers sources spécifiés en tant que code C. Par défaut, les fichiers avec une .c extension sont compilés en tant que C.
  • Compiler en tant que code C++ (/TP) : compilez les fichiers sources spécifiés en tant que code C++. Par défaut, tous les fichiers sources qui n’ont pas d’extension.c, .h.ixx.cppmou qui n’ont pas d’extension, sont compilés en tant que C++.
  • Compiler en tant que code de module C++ (/interface) : compilez les fichiers sources spécifiés en tant que code de module C++. Par défaut, les fichiers avec une extension .cppm ou .ixx sont compilés comme du code de module C++.
  • Compiler en tant que partition interne du module C++ (/internalPartition) : compilez les fichiers sources spécifiés en tant que partition interne du module C++.
  • Compiler en tant qu’unité d’en-tête C++ (/exportHeader) : compilez les fichiers sources spécifiés en tant qu’unité d’en-tête C++. Par défaut, les fichiers avec une .h extension ou aucune extension sont compilés en tant qu’unités d’en-tête.

Désactiver des avertissements spécifiques

Désactivez les numéros d’avertissement spécifiés. Placez les numéros d’avertissement dans une liste délimitée par des points-virgules. Définit /wd<nombre.>

Fichier Include forcé

Spécifie un ou plusieurs fichiers d’inclusion forcée. Définit le /FI<nom.>

Utilisation forcée de fichier #using

Spécifie un ou plusieurs fichiers #using forcés. Définit le /FU<nom.>

Affichage des fichiers Include

Affiche la liste des fichiers include avec les résultats de la compilation. Définit /showIncludes.

Utiliser des chemins complets

Utilisez des chemins complets dans les messages de diagnostic. Définit /FC.

Omettre le nom de la bibliothèque par défaut

Spécifie d’omettre les noms de bibliothèque par défaut dans les .obj fichiers. Définit /Zl.

Rapport d’erreurs du compilateur interne

Remarque

Cette fonction est déconseillée. À compter de Windows Vista, le rapport d’erreurs est contrôlé par les paramètres de rapport d’erreurs Windows (WER ).

Traiter des avertissements spécifiques comme des erreurs

Traite l’avertissement spécifique du compilateur comme une erreur, où n est un avertissement du compilateur.

Options supplémentaires

Options supplémentaires.