Options du compilateur classées par catégorie
Cet article contient une liste par catégorie d'options du compilateur. Pour obtenir une liste alphabétique, consultez les options du compilateur répertoriées par ordre alphabétique.
Optimisation
Option | Objectif |
---|---|
/favor:<blend|AMD64|INTEL64|ATOM> |
Produit du code optimisé pour une architecture spécifiée ou pour une plage d'architectures. |
/O1 |
Crée un code compact. |
/O2 |
Crée un code rapide. |
/Ob<n> |
Contrôle l'expansion inline. |
/Od |
Désactive l'optimisation. |
/Og |
Déconseillé. Utilise des optimisations globales. |
/Oi[-] |
Génère des fonctions intrinsèques. |
/Os |
Favorise la taille du code. |
/Ot |
Favorise la vitesse du code. |
/Ox |
Sous-ensemble de /O2 qui n’inclut pas /GF ou /Gy. |
/Oy |
Omet le pointeur de frame. (x86 uniquement) |
Génération de code
Option | Objectif |
---|---|
/arch |
Configuration minimale requise pour l’architecture du processeur. |
/clr |
Produit un fichier de sortie à exécuter sur le CLR (Common Language Runtime). |
/clr:implicitKeepAlive- |
Désactiver l’émission implicite de System::GC::KeepAlive(this) . |
/clr:initialAppDomain |
Activez le comportement AppDomain initial de Visual C++ 2002. |
/clr:netcore |
Produisez des assemblys ciblant le runtime .NET Core. |
/clr:noAssembly |
Ne produisez pas d’assembly. |
/clr:nostdimport |
N’importez pas implicitement les assemblys requis. |
/clr:nostdlib |
Ignorez le répertoire .NET Framework système lors de la recherche d’assemblys. |
/clr:pure |
Produire un fichier de sortie il uniquement (aucun code exécutable natif). |
/clr:safe |
Produire un fichier de sortie vérifiable en IL uniquement. |
/EHa |
Activez la gestion des exceptions C++ (avec des exceptions SEH). |
/EHc |
extern "C" a la valeur par défaut nothrow . |
/EHr |
Générez toujours des noexcept vérifications d’arrêt du runtime. |
/EHs |
Activez la gestion des exceptions C++ (aucune exception SEH). |
/feature |
Activer les fonctionnalités d’architecture.17.10 |
/fp:contract |
Prenez en compte les contractions à virgule flottante lors de la génération du code. |
/fp:except[-] |
Envisagez d’utiliser des exceptions à virgule flottante lors de la génération du code. |
/fp:fast |
Modèle à virgule flottante « rapide » ; les résultats sont moins prévisibles. |
/fp:precise |
Modèle à virgule flottante « précis » ; les résultats sont prévisibles. |
/fp:strict |
Modèle à virgule flottante « strict » (implique /fp:except ). |
/fpcvt:BC |
Conversion à virgule flottante compatible descendante avec les conversions d’entiers non signés. |
/fpcvt:IA |
Comportement de conversion d’entier non signé à virgule flottante native Intel. |
/fsanitize |
Active la compilation de l’instrumentation de l’assainisseur, telle que AddressSanitizer. |
/fsanitize-coverage |
Active la compilation de l’instrumentation de couverture du code pour les bibliothèques telles que LibFuzzer. |
/GA |
Optimise pour les applications Windows. |
/Gd |
Utilise la convention d'appel __cdecl . (x86 uniquement) |
/Ge |
Déconseillé. Active les tests de pile. |
/GF |
Active le regroupement des chaînes. |
/Gh |
Appelle la fonction de raccordement _penter . |
/GH |
Appelle la fonction de raccordement _pexit . |
/GL[-] |
Active l'optimisation de l'ensemble du programme. |
/Gm[-] |
Déconseillé. Active la régénération minimale. |
/Gr |
Utilise la convention d'appel __fastcall . (x86 uniquement) |
/GR[-] |
Active les informations de type au moment de l'exécution (RTTI, Run-Time Type Information). |
/GS[-] |
Vérifie la sécurité des mémoires tampons. |
/Gs[n] |
Gère les tests de pile. |
/GT |
Prend en charge la sécurité des fibres pour les données allouées en utilisant un stockage local des threads de type statique. |
/Gu[-] |
Vérifiez que les fonctions distinctes ont des adresses distinctes. |
/guard:cf[-] |
Ajoute des vérifications de sécurité de protection du flux de contrôle. |
/guard:ehcont[-] |
Active les métadonnées de continuation EH. |
/Gv |
Utilise la convention d'appel __vectorcall . (x86 et x64 uniquement) |
/Gw[-] |
Active l'optimisation globale des données de la totalité du programme. |
/GX[-] |
Déconseillé. Active la gestion synchrone des exceptions. Utilisez /EH à la place. |
/Gy[-] |
Active la liaison au niveau des fonctions. |
/Gz |
Utilise la convention d'appel __stdcall . (x86 uniquement) |
/GZ |
Déconseillé. Active les vérifications rapides. (Identique à /RTC1 ) |
/homeparams |
Force l'écriture des paramètres passés dans les registres à leurs emplacements sur la pile lors de l'entrée de la fonction. Cette option de compilateur concerne uniquement les compilateurs x64 (compilation native et croisée). |
/hotpatch |
Crée une image corrigeable en mémoire. |
/jumptablerdata |
Placez les tables de saut d’instruction switch case dans la .rdata section. |
/Qfast_transcendentals |
Génère des fonctions transcendantes rapides. |
/QIfist |
Déconseillé. Supprime l'appel de la fonction d'assistance _ftol quand la conversion d'un type à virgule flottante vers un type intégral est requise. (x86 uniquement) |
/Qimprecise_fwaits |
Supprime les commandes fwait dans les blocs try . |
/QIntel-jcc-erratum |
Atténue l’impact sur les performances de la mise à jour du microcode Intel JCC erratum. |
/Qpar |
Active la parallélisation automatique des boucles. |
/Qpar-report:n |
Active les niveaux de création de rapports pour la parallélisation automatique. |
/Qsafe_fp_loads |
Utilise des instructions de déplacement d'entiers pour les valeurs à virgule flottante et désactive certaines optimisations de charge de virgule flottante. |
/Qspectre[-] |
Activez les atténuations pour CVE 2017-5753, pour une classe d’attaques Spectre. |
/Qspectre-load |
Générez des instructions de sérialisation pour chaque instruction de chargement. |
/Qspectre-load-cf |
Générez des instructions de sérialisation pour chaque instruction de flux de contrôle qui charge la mémoire. |
/Qvec-report:n |
Active les niveaux de création de rapports pour le vectorisation automatique. |
/RTC1 |
Activer les vérifications rapides du runtime (équivalentes à /RTCsu ). |
/RTCc |
Convertissez en vérifications de type plus petites au moment de l’exécution. |
/RTCs |
Activez les vérifications du runtime d’images de pile. |
/RTCu |
Active les vérifications d’utilisation locales non initialisées. |
/volatile:iso |
La sémantique d’acquisition/mise en production n’est pas garantie sur les accès volatiles. |
/volatile:ms |
Acquérir/libérer la sémantique garantie sur les accès volatiles. |
Fichiers de sortie
Option | Objectif |
---|---|
/doc |
Traite les commentaires de documentation pour les diriger vers un fichier XML. |
/FA |
Configure un fichier de listes d'assemblys. |
/Fa |
Crée un fichier de listes d'assemblys. |
/Fd |
Renomme le fichier de base de données du programme. |
/Fe |
Renomme le fichier exécutable. |
/Fi |
Spécifie le nom du fichier de sortie prétraité. |
/Fm |
Crée un fichier de mappage. |
/Fo |
Crée un fichier objet. |
/Fp |
Spécifie un nom de fichier d'en-tête précompilé. |
/FR , /Fr |
Noms des fichiers de navigateur générés .sbr . /Fr est déconseillé. |
/Ft<dir> |
Emplacement des fichiers d’en-tête générés pour #import . |
Préprocesseur
Option | Objectif |
---|---|
/AI<dir> |
Spécifie un répertoire à rechercher pour résoudre les références de fichiers passées à la #using directive. |
/C |
Conserve les commentaires pendant le prétraitement. |
/D<name>{=|#}<text> |
Définit des constantes et des macros. |
/E |
Copie la sortie du préprocesseur vers une sortie standard. |
/EP |
Copie la sortie du préprocesseur vers une sortie standard. |
/FI<file> |
Prétraite le fichier Include spécifié. |
/FU<file> |
Force l’utilisation d’un nom de fichier, comme si elle avait été passée à la #using directive. |
/Fx |
Fusionne le code injecté avec le fichier source. |
/I<dir> |
Recherche des fichiers Include dans un répertoire. |
/P |
Écrit la sortie du préprocesseur dans un fichier. |
/PD |
Imprimez toutes les définitions de macro. |
/PH |
Générer #pragma file_hash lors du prétraitement. |
/U<name> |
Supprime une macro prédéfinie. |
/u |
Supprime toutes les macros prédéfinies. |
/X |
Ignore le répertoire Include standard. |
Unités/modules d’en-tête
Option | Objectif |
---|---|
/exportHeader |
Créez les fichiers d’unités d’en-tête (.ifc ) spécifiés par les arguments d’entrée. |
/headerUnit |
Spécifiez où rechercher le fichier d’unité d’en-tête (.ifc ) pour l’en-tête spécifié. |
/headerName |
Générez une unité d’en-tête à partir de l’en-tête spécifié. |
/ifcOutput |
Spécifiez le nom ou le répertoire du fichier de sortie pour les fichiers générés .ifc . |
/interface |
Traitez le fichier d’entrée en tant qu’unité d’interface de module. |
/internalPartition |
Traitez le fichier d’entrée comme une unité de partition interne. |
/reference |
Utilisez le module NOMMÉ IFC. |
/scanDependencies |
Répertorier les dépendances de module et d’unité d’en-tête dans le formulaire JSON standard C++. |
/sourceDependencies |
Répertorier toutes les dépendances au niveau source. |
/sourceDependencies:directives |
Répertorier les dépendances de module et d’unité d’en-tête. |
/translateInclude |
Traitez #include comme import . |
Language
Option | Objectif |
---|---|
/await |
Activez les extensions coroutines (fonctions pouvant être reprise). |
/await:strict |
Activez la prise en charge standard de la coroutine C++20 avec les versions antérieures du langage. |
/constexpr:backtrace<N> |
Afficher les évaluations N constexpr dans les diagnostics (valeur par défaut : 10). |
/constexpr:depth<N> |
Limite de profondeur de récursivité pour constexpr l’évaluation (valeur par défaut : 512). |
/constexpr:steps<N> |
Terminer l’évaluation constexpr après N étapes (par défaut : 100000) |
/openmp |
#pragma omp Active dans le code source. |
/openmp:experimental |
Activez les extensions de langage OpenMP 2.0 et sélectionnez Extensions de langage OpenMP 3.0+. |
/openmp:llvm |
Extensions de langage OpenMP à l’aide du runtime LLVM. |
/permissive[-] |
Définissez le mode de conformité standard. |
/std:c++14 |
C++14 ISO/IEC 14882:2014 (valeur par défaut). |
/std:c++17 |
C++17 norme ISO/IEC 14882:2017. |
/std:c++20 |
C++20 ISO/IEC 14882:2020 standard. |
/std:c++latest |
Les dernières fonctionnalités de préversion standard C++ de brouillon. |
/std:c11 |
Norme ISO/IEC C11 9899:2011. |
/std:c17 |
Norme ISO/IEC 9899:2018 C17. |
/std:clatest |
Dernières fonctionnalités de préversion C standard. |
/vd{0|1|2} |
Supprime ou active les membres masqués de la classe vtordisp . |
/vmb |
Utilise la meilleure base pour les pointeurs vers des membres. |
/vmg |
Utilise la généralité complète pour les pointeurs vers des membres. |
/vmm |
Déclare un héritage multiple. |
/vms |
Déclare un héritage simple. |
/vmv |
Déclare un héritage virtuel. |
/Z7 |
Génère des informations de débogage compatibles C 7.0. |
/Za |
Désactive certaines extensions de langage C89 dans le code C. |
/Zc:__cplusplus[-] |
Activez la macro pour signaler la __cplusplus norme prise en charge (désactivée par défaut). |
/Zc:__STDC__ |
Activez la macro pour signaler que la __STDC__ norme C est prise en charge (désactivée par défaut). |
/Zc:alignedNew[-] |
Activez l’allocation dynamique alignée sur C++17 (activée par défaut en C++17). |
/Zc:auto[-] |
Appliquez la nouvelle signification C++ Standard pour auto (activé par défaut). |
/Zc:char8_t[-] |
Activez ou désactivez la prise en charge littérale native u8 C++20 comme const char8_t (désactivé par défaut, sauf sous /std:c++20 ). |
/Zc:enumTypes[-] |
Activez les règles C++ standard pour les types de base déduits enum (off b y par défaut, non implicite par /permissive- ). |
/Zc:externC[-] |
Appliquer des règles C++ standard pour extern "C" les fonctions (implicites par /permissive- ). |
/Zc:externConstexpr[-] |
Activez la liaison externe pour constexpr les variables (désactivées par défaut). |
/Zc:forScope[-] |
Appliquer des règles d’étendue C++ for standard (activées par défaut). |
/Zc:gotoScope |
Appliquer des règles C++ goto standard autour de l’initialisation des variables locales (implicite par /permissive- ). |
/Zc:hiddenFriend[-] |
Appliquer des règles d’ami masquées C++ standard (implicites par /permissive- ) |
/Zc:implicitNoexcept[-] |
Activez implicitement noexcept les fonctions requises (activées par défaut). |
/Zc:inline[-] |
Supprimez les fonctions ou données non référencées si elles sont COMDAT ou qu’elles ont une liaison interne uniquement (désactivée par défaut). |
/Zc:lambda[-] |
Activez le nouveau processeur lambda pour les vérifications syntaxiques en mode conformité dans les lambdas génériques. |
/Zc:noexceptTypes[-] |
Appliquez les règles C++17 noexcept (par défaut en C++17 ou version ultérieure). |
/Zc:nrvo[-] |
Activez les élisions de copie et de déplacement facultatives (activées par défaut sous /O2 , /permissive- ou /std:c++20 version ultérieure). |
/Zc:preprocessor[-] |
Utilisez le nouveau préprocesseur conforme (désactivé par défaut, sauf dans C11/C17). |
/Zc:referenceBinding[-] |
Un UDT temporaire ne sera pas lié à une référence non-const lvalue (désactivée par défaut). |
/Zc:rvalueCast[-] |
Appliquez les règles de conversion de type explicite C++ standard (désactivées par défaut). |
/Zc:sizedDealloc[-] |
Activez les fonctions de désallocation de taille globale C++14 (activées par défaut). |
/Zc:strictStrings[-] |
Désactivez le littéral de chaîne en char* ou wchar_t* la conversion (désactivé par défaut). |
/Zc:templateScope[-] |
Appliquez les règles d’ombre des paramètres de modèle C++ standard (désactivées par défaut). |
/Zc:ternary[-] |
Appliquer des règles d’opérateur conditionnel sur les types d’opérandes (désactivés par défaut). |
/Zc:threadSafeInit[-] |
Activez l’initialisation statique locale thread-safe (activée par défaut). |
/Zc:throwingNew[-] |
Supposons que operator new la levée est levée en cas d’échec (désactivée par défaut). |
/Zc:tlsGuards[-] |
Générer des vérifications d’exécution pour l’initialisation des variables TLS (activées par défaut). |
/Zc:trigraphs |
Activez les trigraphes (obsolètes, désactivés par défaut). |
/Zc:twoPhase[-] |
Utilisez un comportement d’analyse de modèle non conforme (conforme par défaut). |
/Zc:wchar_t[-] |
wchar_t est un type natif, et non un typedef (activé par défaut). |
/Zc:zeroSizeArrayNew[-] |
Appelez le membre new /delete pour les 0 tableaux d’objets (activés par défaut). |
/Ze |
Déconseillé. Active les extensions de langage C89. |
/Zf |
Améliore le temps de génération PDB dans les builds parallèles. |
/ZH:[MD5|SHA1|SHA_256] |
Spécifie MD5, SHA-1 ou SHA-256 pour les sommes de contrôle dans les informations de débogage. |
/ZI |
Inclut des informations de débogage dans une base de données du programme compatible avec Modifier & Continuer. (x86 uniquement) |
/Zi |
Génère des informations de débogage complètes. |
/Zl |
Supprime le nom de la bibliothèque par défaut du .obj fichier. |
/Zo[-] |
Générez des informations de débogage plus riches pour le code optimisé. |
/Zp[n] |
Compresse les membres de la structure. |
/Zs |
Vérifie la syntaxe uniquement. |
/ZW |
Produit un fichier de sortie à exécuter sur Windows Runtime. |
Liaison
Option | Objectif |
---|---|
/F |
Définit la taille de la pile. |
/LD |
Crée une bibliothèque de liens dynamiques. |
/LDd |
Crée une bibliothèque de liens dynamiques de débogage. |
/link |
Passe l'option spécifiée à LINK. |
/LN |
Crée un MSIL .netmodule . |
/MD |
Compile pour créer une DLL multithread à l’aide de MSVCRT.lib. |
/MDd |
Compile pour créer une DLL multithread de débogage à l’aide de MSVCRTD.lib. |
/MT |
Compile pour créer un fichier exécutable multithread à l’aide de LIBCMT.lib. |
/MTd |
Compile pour créer un fichier exécutable multithread de débogage à l’aide de LIBCMTD.lib. |
Divers
Option | Objectif |
---|---|
/? |
Affiche la liste des options du compilateur. |
@ |
Spécifie un fichier réponse. |
/analyze |
Active l'analyse du code. |
/bigobj |
Augmente le nombre de sections adressables dans un fichier .obj. |
/c |
Compile sans liaison. |
/cgthreads |
Spécifie le nombre de threads cl.exe à utiliser pour l’optimisation et la génération de code. |
/errorReport |
Déconseillé. Les paramètres du rapport d’erreurs Windows (WER) contrôlent les rapports d’erreurs. |
/execution-charset |
Définissez le jeu de caractères d’exécution. |
/fastfail |
Activez le mode d’échec rapide. |
/FC |
Affiche le chemin complet des fichiers de code source passés à cl.exe dans le texte de diagnostic. |
/FS |
Force les écritures dans le fichier PDB à sérialiser via MSPDBSRV.EXE. |
/H |
Déconseillé. Limite la longueur des noms externes (publics). |
/HELP |
Affiche la liste des options du compilateur. |
/J |
Change le type char par défaut. |
/JMC |
Prend en charge le débogage C++ natif juste mon code. |
/kernel |
Le compilateur et l’éditeur de liens créent un binaire qui peut être exécuté dans le noyau Windows. |
/MP |
Génère plusieurs fichiers sources simultanément. |
/nologo |
Supprime l'affichage de la bannière d'ouverture de session. |
/presetPadding |
Zéro initialise le remplissage pour les types de classes basés sur la pile. |
/showIncludes |
Affiche la liste de tous les fichiers Include pendant la compilation. |
/source-charset |
Définissez le jeu de caractères source. |
/Tc |
Spécifie un fichier source C. |
/TC |
Spécifie que tous les fichiers sources sont C. |
/Tp |
Spécifie un fichier source C++. |
/TP |
Spécifie tous les fichiers sources sont C++. |
/utf-8 |
Définissez les jeux de caractères source et d’exécution sur UTF-8. |
/V |
Déconseillé. Définit la chaîne version. |
/validate-charset |
Validez les fichiers UTF-8 uniquement pour les caractères compatibles. |
/volatileMetadata |
Générez des métadonnées sur les accès à la mémoire volatile. |
/Yc |
Créez un .PCH fichier. |
/Yd |
Déconseillé. Place des informations de débogage complètes dans tous les fichiers objets. Utilisez /Zi à la place. |
/Yl |
Injecte une référence PCH lors de la création d'une bibliothèque de débogage. |
/Yu |
Utilise un fichier d'en-tête précompilé pendant la génération. |
/Y- |
Ignore toutes les autres options d'en-tête précompilé pour la génération en cours. |
/Zm |
Spécifie la limite d'allocation de mémoire de l'en-tête précompilé. |
Diagnostics
Option | Objectif |
---|---|
/diagnostics:caret[-] |
Format de diagnostic : imprime la colonne et la ligne de source indiquée. |
/diagnostics:classic |
Utilisez le format de diagnostic hérité. |
/diagnostics |
Format de diagnostic : imprime les informations de colonne. |
/external:anglebrackets |
Traitez tous les en-têtes inclus par le biais <> d’un environnement externe. |
/external:env:<var> |
Spécifiez une variable d’environnement avec des emplacements d’en-têtes externes. |
/external:I <path> |
Spécifiez l’emplacement des en-têtes externes. |
/external:templates[-] |
Évaluez le niveau d’avertissement dans la chaîne d’instanciation du modèle. |
/external:W<n> |
Définissez le niveau d’avertissement pour les en-têtes externes. |
/options:strict |
Les options du compilateur non reconnues sont des erreurs. |
/sdl |
Activer davantage de fonctionnalités de sécurité et d’avertissements. |
/w |
Désactivez tous les avertissements. |
/W0 , , /W1 /W2 , , /W3 /W4 |
Définissez le niveau d’avertissement de sortie. |
/w1<n> , , /w2<n> /w3<n> , ,/w4<n> |
Définissez le niveau d’avertissement pour l’avertissement spécifié. |
/Wall |
Activez tous les avertissements, y compris les avertissements désactivés par défaut. |
/wd<n> |
Désactivez l’avertissement spécifié. |
/we<n> |
Traitez l’avertissement spécifié comme une erreur. |
/WL |
Activez les diagnostics à une ligne pour les messages d’erreur et d’avertissement lors de la compilation du code source C++ à partir de la ligne de commande. |
/wo<n> |
Affichez l’avertissement spécifié une seule fois. |
/Wv:xx[.yy[.zzzzz]] |
Désactivez les avertissements introduits après la version spécifiée du compilateur. |
/WX |
Considérez les avertissements comme des erreurs. |
Options expérimentales
Les options expérimentales peuvent uniquement être prises en charge par certaines versions du compilateur. Ils peuvent également se comporter différemment dans différentes versions du compilateur. Souvent, la documentation la plus adaptée aux options expérimentales se trouve dans le blog de l’équipe Microsoft C++.
Option | Objectif |
---|---|
/experimental:log |
Active la sortie SARIF structurée expérimentale. |
/experimental:module |
Active la prise en charge des modules expérimentaux. |
Options de compilateur déconseillées et supprimées
Option | Objectif |
---|---|
/clr:noAssembly |
Déconseillé. Utilisez /LN (Créer un module MSIL) à la place. |
/errorReport |
Déconseillé. Le rapport d’erreurs est contrôlé par les paramètres de rapport d’erreurs Windows (WER ). |
/experimental:preprocessor |
Déconseillé. Active la prise en charge expérimentale du préprocesseur conforme. Utilisez /Zc:preprocessor . |
/Fr |
Déconseillé. Crée un fichier d’informations de consultation sans variables locales. |
/Ge |
Déconseillé. Active les tests de pile. Activé par défaut. |
/Gm |
Déconseillé. Active la régénération minimale. |
/GX |
Déconseillé. Active la gestion synchrone des exceptions. Utilisez /EH à la place. |
/GZ |
Déconseillé. Active les vérifications rapides. Utilisez /RTC1 à la place. |
/H |
Déconseillé. Limite la longueur des noms externes (publics). |
/Og |
Déconseillé. Utilise des optimisations globales. |
/QIfist |
Déconseillé. Était utilisé pour spécifier le mode de conversion d’un type à virgule flottante en type intégral. |
/V |
Déconseillé. Définit la chaîne de version du .obj fichier. |
/Wp64 |
Obsolète. Détecte les problèmes de portabilité 64 bits. |
/Yd |
Déconseillé. Place des informations de débogage complètes dans tous les fichiers objets. Utilisez /Zi à la place. |
/Zc:forScope- |
Déconseillé. Désactive la conformité dans la portée d’une boucle for. |
/Ze |
Déconseillé. Active les extensions de langage . |
/Zg |
Supprimé dans Visual Studio 2015. Génère des prototypes de fonction. |
17.10 Cette option est disponible à partir de Visual Studio 2022 version 17.10.
Voir aussi
Référence à la génération d’un programme C/C++
Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC