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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour