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 Action déconseillée. 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:<IA32|SSE|SSE2|AVX|AVX2|AVX512> Configuration minimale requise pour l’architecture du processeur. IA32, SSE et SSE2 sont x86 uniquement.
/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 case activée d’arrêt du runtime.
/EHs Activez la gestion des exceptions C++ (aucune exception SEH).
/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 Action déconseillée. 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[-] Action déconseillée. 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[-] Action déconseillée. 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 Action déconseillée. 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 Action déconseillée. 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 Activez les case activée de runtime rapide (équivalent à /RTCsu).
/RTCc Convertissez en case activée de type plus petit au moment de l’exécution.
/RTCs Activez les case activée d’exécution de frame de pile.
/RTCu Active les case activée d’utilisation locale 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.

Langage

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 case activée syntactiques en mode conformité dans les lambda 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 case activée 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 Action déconseillée. 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 case activée sums 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.

Linking

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 Action déconseillée. 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 transmis à cl.exe dans le texte de diagnostic.
/FS Force les écritures dans le fichier PDB à sérialiser via MSPDBSRV.EXE.
/H Action déconseillée. 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 Action déconseillée. 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 Action déconseillée. 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 Traitez 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 Action déconseillée. Utilisez /LN (Créer un module MSIL) à la place.
/errorReport Action déconseillée. Le rapport d’erreurs est contrôlé par les paramètres de rapport d’erreurs Windows (WER ).
/experimental:preprocessor Action déconseillée. Active la prise en charge expérimentale du préprocesseur conforme. Utiliser /Zc:preprocessor
/Fr Action déconseillée. Crée un fichier d’informations de consultation sans variables locales.
/Ge Action déconseillée. Active les tests de pile. Activé par défaut.
/Gm Action déconseillée. Active la régénération minimale.
/GX Action déconseillée. Active la gestion synchrone des exceptions. Utilisez /EH à la place.
/GZ Action déconseillée. Active les vérifications rapides. Utilisez /RTC1 à la place.
/H Action déconseillée. Limite la longueur des noms externes (publics).
/Og Action déconseillée. Utilise des optimisations globales.
/QIfist Action déconseillée. Était utilisé pour spécifier le mode de conversion d’un type à virgule flottante en type intégral.
/V Action déconseillée. Définit la chaîne de version du .obj fichier.
/Wp64 Obsolète. Détecte les problèmes de portabilité 64 bits.
/Yd Action déconseillée. Place des informations de débogage complètes dans tous les fichiers objets. Utilisez /Zi à la place.
/Zc:forScope- Action déconseillée. Désactive la conformité dans la portée d’une boucle for.
/Ze Action déconseillée. Active les extensions de langage .
/Zg Supprimé dans Visual Studio 2015. Génère des prototypes de fonction.

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