Il s'agit de la commande cpp qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
cpp - Le préprocesseur C
SYNOPSIS
cpp [-Dmacro[=défn]...] [-Umacro]
[-Idir...] [-Je citedir...]
[-Wprévenir...]
[-M|-MM] [-MG] [-MF nom de fichier]
[-MP] [-MQ l'objectif...]
[-MT l'objectif...]
[-P] [-fno-répertoire-de-travail]
[-x langue] [-std=Standard]
dans le fichier fichier de sortie
Seules les options les plus utiles sont répertoriées ici ; voir ci-dessous pour le reste.
DESCRIPTION
Le préprocesseur C, souvent appelé cpp, est une macro processeur qui est utilisé automatiquement par
le compilateur C pour transformer votre programme avant la compilation. ça s'appelle une macro
processeur car il permet de définir macros, qui sont de brèves abréviations pour plus
construit.
Le préprocesseur C est destiné à être utilisé uniquement avec le code source C, C++ et Objective-C.
Dans le passé, il a été abusé en tant que traitement de texte général. Il s'étouffera sur l'entrée qui
n'obéit pas aux règles lexicales de C. Par exemple, les apostrophes seront interprétées comme le
début des constantes de caractères et provoquer des erreurs. De plus, vous ne pouvez pas vous y fier
préserver les caractéristiques de l'entrée qui ne sont pas significatives pour les langages de la famille C.
Si un Makefile est prétraité, tous les onglets fixes seront supprimés et le Makefile sera
ne fonctionne pas.
Cela dit, vous pouvez souvent vous en tirer en utilisant cpp sur des choses qui ne sont pas C. Autre
Les langages de programmation Algol-ish sont souvent sûrs (Pascal, Ada, etc.) Il en va de même pour l'assemblage, avec
mise en garde. -traditionnel-cpp mode préserve plus d'espace blanc, et est autrement plus
permissif. De nombreux problèmes peuvent être évités en écrivant des commentaires de style C ou C++
au lieu de commentaires en langue maternelle et en gardant les macros simples.
Dans la mesure du possible, vous devez utiliser un préprocesseur adapté à la langue que vous écrivez
in. Les versions modernes de l'assembleur GNU ont des fonctions de macro. Niveau le plus élevé
les langages de programmation ont leur propre mécanisme de compilation conditionnelle et d'inclusion. Si
tout le reste échoue, essayez un véritable processeur de texte général, tel que GNU M4.
Les préprocesseurs C varient dans certains détails. Ce manuel traite du préprocesseur GNU C, qui
fournit un petit sur-ensemble des fonctionnalités de la norme ISO C. Dans son mode par défaut, le GNU
Le préprocesseur C ne fait pas certaines choses requises par la norme. Ce sont des fonctionnalités
qui sont rarement, voire jamais, utilisés, et peuvent provoquer des changements surprenants dans le sens d'un
programme qui ne les attend pas. Pour obtenir la norme ISO C stricte, vous devez utiliser le
-std=c90, -std=c99 or -std=c11 options, selon la version de la norme que vous
vouloir. Pour obtenir tous les diagnostics obligatoires, vous devez également utiliser -pédant.
Ce manuel décrit le comportement du préprocesseur ISO. Pour minimiser la gratuité
différences, où le comportement du préprocesseur ISO n'entre pas en conflit avec les
sémantique, le préprocesseur traditionnel devrait se comporter de la même manière. Les différents
les différences qui existent sont détaillées dans la section Traditionnel Mode.
Par souci de clarté, sauf indication contraire, les références à RPC dans ce manuel se référer à GNU CPP.
OPTIONS
Le préprocesseur C attend deux noms de fichiers comme arguments, dans le fichier et fichier de sortieL’
le préprocesseur lit dans le fichier avec tous les autres fichiers qu'il spécifie avec #comprendre. Tous
la sortie générée par les fichiers d'entrée combinés est écrite dans fichier de sortie.
Non plus dans le fichier or fichier de sortie peut être -, qui en tant que dans le fichier signifie lire à partir d'une entrée standard et
as fichier de sortie signifie écrire sur la sortie standard. De plus, si l'un des fichiers est omis, cela signifie
le même que si - avait été spécifié pour ce fichier.
Sauf indication contraire, ou l'option se termine par =, toutes les options qui prennent un argument peuvent
faire apparaître cet argument soit immédiatement après l'option, soit avec un espace entre
option et argument : -Ifoo et -I foo ont le même effet.
De nombreuses options ont des noms à plusieurs lettres ; par conséquent, plusieurs options à une lettre peuvent ne sauraient be
regroupés : -dM est très différent de -d -M.
-D prénom
Prédéfinir prénom en tant que macro, avec la définition 1.
-D prénom=définition
Le contenu de définition sont tokenisés et traités comme s'ils étaient apparus pendant
traduction phase trois dans un #define directif. En particulier, la définition sera
tronqué par des caractères de nouvelle ligne intégrés.
Si vous appelez le préprocesseur à partir d'un shell ou d'un programme similaire, vous aurez peut-être besoin
d'utiliser la syntaxe des guillemets du shell pour protéger les caractères tels que les espaces qui ont un
sens dans la syntaxe du shell.
Si vous souhaitez définir une macro de type fonction sur la ligne de commande, écrivez son argument
liste entourée de parenthèses avant le signe égal (le cas échéant). Les parenthèses sont
significatif pour la plupart des shells, vous devrez donc citer l'option. Avec sh et csh,
-RÉ'prénom(arguments...)=définition' œuvres.
-D et -U les options sont traitées dans l'ordre dans lequel elles sont données sur la ligne de commande. Tous
-imacros filet et -comprendre filet les options sont traitées après tout -D et -U options.
-U prénom
Annuler toute définition précédente de prénom, soit intégré, soit pourvu d'un -D option.
-undef
Ne prédéfinissez aucune macro spécifique au système ou à GCC. La norme prédéfinie
les macros restent définies.
-I dir
Ajouter le répertoire dir à la liste des répertoires dans lesquels rechercher les fichiers d'en-tête.
Répertoires nommés par -I sont recherchés avant que le système standard n'inclue les répertoires.
Si le répertoire dir est un répertoire d'inclusion système standard, l'option est ignorée pour
s'assurer que l'ordre de recherche par défaut des répertoires système et le traitement spécial
des en-têtes système ne sont pas vaincus. Si dir commence par "=", alors le "=" sera
remplacé par le préfixe sysroot ; voir --sysroot et -isysroot.
-o filet
Écrire la sortie dans filet. C'est la même chose que de spécifier filet comme deuxième non-option
argument cpp. gcc a une interprétation différente d'un deuxième argument non optionnel,
donc tu dois utiliser -o pour spécifier le fichier de sortie.
-Mur
Active tous les avertissements facultatifs qui sont souhaitables pour le code normal. A l'heure actuelle cette
is -Commentaire, -Wtrigraphes, -Wmulticar et un avertissement concernant la promotion d'entiers provoquant un
changement de signe dans les expressions "#if". Notez que de nombreux avertissements du préprocesseur
sont activés par défaut et n'ont aucune option pour les contrôler.
-Commentaire
-Wcommentaires
Avertir chaque fois qu'une séquence de début de commentaire /* apparaît dans un /* commentaire, ou chaque fois qu'un
backslash-newline apparaît dans un // commenter. (Les deux formes ont le même effet.)
-Wtrigraphes
La plupart des trigraphes dans les commentaires ne peuvent pas affecter le sens du programme. Cependant, un
trigraphe qui formerait une nouvelle ligne échappée (??/ à la fin d'une ligne) peut, en
changer où le commentaire commence ou se termine. Par conséquent, seuls les trigraphes qui formeraient
Les sauts de ligne échappés produisent des avertissements dans un commentaire.
Cette option est impliquée par -Mur. Si -Mur n'est pas donné, cette option est toujours activée
sauf si les trigraphes sont activés. Pour obtenir une conversion de trigraphe sans avertissements, mais obtenez
L'autre -Mur avertissements, utiliser -trigraphes -Mur -Wno-trigraphes.
-Wtraditionnel
Avertir de certaines constructions qui se comportent différemment en traditionnel et en ISO C. Aussi
avertir des constructions ISO C qui n'ont pas d'équivalent en C traditionnel et problématiques
constructions à éviter.
-Wundef
Avertir chaque fois qu'un identifiant qui n'est pas une macro est rencontré dans un #si directif,
à l'extérieur du défini. Ces identifiants sont remplacés par zéro.
-Winutilisé-macros
Avertir des macros définies dans le fichier principal qui ne sont pas utilisées. Une macro est d'utiliser Si c'est
étendu ou testé pour l'existence au moins une fois. Le préprocesseur avertira également si
la macro n'a pas été utilisée au moment où elle est redéfinie ou indéfinie.
Macros intégrées, macros définies sur la ligne de commande et macros définies dans include
les fichiers ne sont pas avertis.
Remarque : Si une macro est réellement utilisée, mais uniquement dans les blocs conditionnels ignorés, alors
Le RPC le déclarera comme inutilisé. Pour éviter l'avertissement dans un tel cas, vous pouvez améliorer
la portée de la définition de la macro, par exemple en la déplaçant dans le premier sauté
bloquer. Alternativement, vous pouvez fournir une utilisation fictive avec quelque chose comme :
#if défini la_macro_causant_l'avertissement
#endif
-Wendif-étiquettes
Avertir chaque fois qu'un #else ou d’une #endif sont suivis de texte. Cela se produit généralement dans
code du formulaire
#si FOO
#autre FOO
#endif FOO
Les deuxième et troisième « FOO » devraient être dans les commentaires, mais ne le sont souvent pas dans les anciens programmes.
Cet avertissement est activé par défaut.
-Werreur
Transformez tous les avertissements en erreurs matérielles. Le code source qui déclenche les avertissements sera
rejeté.
-Wsystem-en-têtes
Émettre des avertissements pour le code dans les en-têtes système. Ceux-ci sont normalement inutiles pour trouver
bugs dans votre propre code, donc supprimés. Si vous êtes responsable du système
bibliothèque, vous voudrez peut-être les voir.
-w Supprimez tous les avertissements, y compris ceux émis par défaut par GNU CPP.
-pédant
Émettez tous les diagnostics obligatoires répertoriés dans la norme C. Certains d'entre eux sont laissés
par défaut, car ils se déclenchent fréquemment sur du code inoffensif.
-pédant-erreurs
Émettez tous les diagnostics obligatoires et transformez tous les diagnostics obligatoires en erreurs.
Cela inclut les diagnostics obligatoires que GCC émet sans -pédant mais traite comme
avertissements.
-M Au lieu d'afficher le résultat du prétraitement, éditez une règle adaptée à a prendre une
décrivant les dépendances du fichier source principal. Le préprocesseur sort un
a prendre une règle contenant le nom du fichier objet pour ce fichier source, deux points et les noms
de tous les fichiers inclus, y compris ceux provenant de -comprendre or -imacros commander-
options de ligne.
Sauf indication explicite (avec -MT or -MQ), le nom du fichier objet se compose du
nom du fichier source avec n'importe quel suffixe remplacé par le suffixe du fichier objet et avec n'importe quel
parties de répertoire principales supprimées. S'il y a beaucoup de fichiers inclus, la règle est
diviser en plusieurs lignes à l'aide \-nouvelle ligne. La règle n'a pas de commandes.
Cette option ne supprime pas la sortie de débogage du préprocesseur, telle que -dM. Éviter
en mélangeant une telle sortie de débogage avec les règles de dépendance, vous devez spécifier explicitement le
fichier de sortie de dépendance avec -MF, ou utilisez une variable d'environnement comme
DEPENDANCES_OUTPUT. La sortie de débogage sera toujours envoyée au flux de sortie normal comme
Normal.
En passant -M au conducteur implique -E, et supprime les avertissements avec un -w.
-MM J'aime -M mais ne mentionnez pas les fichiers d'en-tête qui se trouvent dans les répertoires d'en-tête du système,
ni les fichiers d'en-tête qui sont inclus, directement ou indirectement, à partir d'un tel en-tête.
Cela implique que le choix des chevrons ou des guillemets doubles dans un #comprendre
directive ne détermine pas en soi si cet en-tête apparaîtra dans -MM
sortie de dépendance. Il s'agit d'un léger changement dans la sémantique des versions GCC 3.0 et
plus tôt.
-MF filet
Lorsqu'il est utilisé avec -M or -MM, spécifie un fichier dans lequel écrire les dépendances. Sinon -MF
le commutateur est donné le préprocesseur envoie les règles au même endroit qu'il aurait envoyé
sortie prétraitée.
Lorsqu'il est utilisé avec les options du pilote -MARYLAND or -MMD, -MF remplace la dépendance par défaut
fichier de sortie.
-MG En conjonction avec une option telle que -M demander la génération de dépendances, -MG suppose
les fichiers d'en-tête manquants sont des fichiers générés et les ajoute à la liste de dépendances sans
levant une erreur. Le nom du fichier de dépendance est tiré directement du "#include"
directive sans ajouter de chemin. -MG supprime également la sortie prétraitée, en tant que
le fichier d'en-tête manquant rend cela inutile.
Cette fonctionnalité est utilisée dans la mise à jour automatique des makefiles.
-MP Cette option demande à CPP d'ajouter une cible bidon pour chaque dépendance autre que la
fichier principal, ce qui fait que chacun ne dépend de rien. Ces règles factices contournent les erreurs
a prendre une donne si vous supprimez les fichiers d'en-tête sans mettre à jour le Makefile correspondre.
Voici une sortie typique :
test.o : test.c test.h
test.h :
-MT l'objectif
Modifiez la cible de la règle émise par la génération de dépendances. Par défaut, le RPC prend
le nom du fichier d'entrée principal, supprime tous les composants du répertoire et tout suffixe de fichier
tel que .c, et ajoute le suffixe d'objet habituel de la plate-forme. Le résultat est la cible.
An -MT L'option définira la cible pour qu'elle soit exactement la chaîne que vous spécifiez. Si tu veux
plusieurs cibles, vous pouvez les spécifier en tant qu'argument unique pour -MT, ou utilisez plusieurs
-MT options.
Par exemple, -MT '$(objpfx)foo.o' pourrait donner
$(objpfx)foo.o : foo.c
-MQ l'objectif
Pareil que -MT, mais il cite tous les caractères spéciaux pour Make.
-MQ '$(objpfx)foo.o' donne
$$(objpfx)foo.o : foo.c
La cible par défaut est automatiquement citée, comme si elle était donnée avec -MQ.
-MARYLAND -MARYLAND équivaut à -M -MF filet, excepté -E n'est pas implicite. Le conducteur
détermine filet selon qu'un -o option est donnée. Si c'est le cas, le conducteur utilise son
argument mais avec un suffixe de .d, sinon il prend le nom du fichier d'entrée,
supprime tous les composants et suffixes du répertoire et applique un .d suffixe.
If -MARYLAND est utilisé en conjonction avec -E, tout -o commutateur est compris pour spécifier le
fichier de sortie de dépendance, mais s'il est utilisé sans -E, Chaque -o est entendu pour spécifier un
fichier objet cible.
Depuis que -E n'est pas implicite, -MARYLAND peut être utilisé pour générer un fichier de sortie de dépendance en tant que
effet secondaire du processus de compilation.
-MMD
J'aime -MARYLAND sauf mentionner uniquement les fichiers d'en-tête utilisateur, pas les fichiers d'en-tête système.
-x c
-x c ++
-x Objective-C
-x assembleur-avec-cpp
Spécifiez le langage source : C, C++, Objective-C ou assembleur. Cela n'a rien à voir
avec conformité aux normes ou extensions ; il sélectionne simplement la syntaxe de base à
attendre. Si vous ne donnez aucune de ces options, cpp déduira la langue du
extension du fichier source : .c, . Cc, .m, ou .S. Quelques autres extensions courantes pour
C++ et assembleur sont également reconnus. Si cpp ne reconnaît pas l'extension, il
traitera le fichier comme C ; c'est le mode le plus générique.
Remarque : Les versions précédentes de cpp acceptaient un -long option qui a sélectionné à la fois le
langue et le niveau de conformité aux normes. Cette option a été supprimée, car
il entre en conflit avec le -l option.
-std=Standard
-ansi
Spécifiez la norme à laquelle le code doit se conformer. Actuellement, le RPC connaît C
et les normes C++ ; d'autres pourraient être ajoutés à l'avenir.
Standard peut être l'un des :
"c90"
"c89"
"iso9899:1990"
La norme ISO C de 1990. c90 est le raccourci habituel pour cette version de
le standard.
Le -ansi option équivaut à -std=c90.
"iso9899:199409"
La norme C de 1990, telle que modifiée en 1994.
"iso9899:1999"
"c99"
"iso9899:199x"
"c9x"
La norme ISO C révisée, publiée en décembre 1999. Avant sa publication, cette
était connu sous le nom de C9X.
"iso9899:2011"
"c11"
"c1x"
La norme ISO C révisée, publiée en décembre 2011. Avant sa publication, cette
était connu sous le nom de C1X.
"gnu90"
"gnu89"
La norme C de 1990 plus les extensions GNU. C'est la valeur par défaut.
"gnu99"
"gnu9x"
La norme C de 1999 plus les extensions GNU.
"gnu11"
"gnu1x"
La norme C de 2011 plus les extensions GNU.
"c++98"
La norme ISO C++ 1998 plus ses amendements.
"gnu++98"
Le même que -std = c ++ 98 plus les extensions GNU. C'est la valeur par défaut pour le code C++.
-I- Divisez le chemin d'inclusion. Tous les répertoires spécifiés avec -I options avant -I-
recherché uniquement pour les en-têtes demandés avec "#include "déposer""; ils ne sont pas recherchés
"#comprendrefichier>". Si des répertoires supplémentaires sont spécifiés avec -I options après la
-I-, ces répertoires sont recherchés pour tous #comprendre directives.
Par ailleurs, -I- inhibe l'utilisation du répertoire du répertoire de fichiers courant comme
le premier répertoire de recherche pour " #include "déposer"".
Cette option a été dépréciée.
-nostdinc
Ne recherchez pas les fichiers d'en-tête dans les répertoires système standard. Seuls les répertoires
vous avez spécifié avec -I options (et le répertoire du fichier courant, si
approprié) sont recherchés.
-nostdinc++
Ne recherchez pas les fichiers d'en-tête dans les répertoires standard spécifiques à C++, mais faites quand même
rechercher dans les autres répertoires standard. (Cette option est utilisée lors de la construction du C++
bibliothèque.)
-comprendre filet
Processus filet comme si "#include "file"" apparaissait comme première ligne de la source principale
déposer. Cependant, le premier répertoire recherché filet le préprocesseur fonctionne-t-il
annuaire plutôt ; of le répertoire contenant le fichier source principal. Si non trouvé
là, il est recherché dans le reste de la chaîne de recherche "#include "..."" comme
Normal.
Si plusieurs -comprendre sont données, les fichiers sont inclus dans l'ordre dans lequel ils
apparaissent sur la ligne de commande.
-imacros filet
Exactement comme -comprendre, sauf que toute sortie produite par la numérisation filet Est lancé
une façon. Les macros qu'il définit restent définies. Cela vous permet d'acquérir toutes les macros
à partir d'un en-tête sans traiter également ses déclarations.
Tous les fichiers spécifiés par -imacros sont traités avant tous les fichiers spécifiés par -comprendre.
-idirafter dir
Rechercher dir pour les fichiers d'en-tête, mais faites-le après tous les répertoires spécifiés avec -I et les
les répertoires système standard ont été épuisés. dir est traité comme un système
annuaire. Si dir commence par "=", alors le "=" sera remplacé par le sysroot
préfixe; voir --sysroot et -isysroot.
-ipréfixe préfixe
Spécifier préfixe comme préfixe pour la suite -iavecpréfixe option. Si le préfixe
représente un répertoire, vous devez inclure le dernier /.
-iavecpréfixe dir
-iavecpréfixeavant dir
Ajouter dir au préfixe spécifié précédemment avec -ipréfixe, et ajouter le résultat
répertoire au chemin de recherche d'inclusion. -iavecpréfixeavant le met au même endroit -I
aurait; -iavecpréfixe le met où -idirafter aurait.
-isysroot dir
Cette option est comme la --sysroot option, mais s'applique uniquement aux fichiers d'en-tête (sauf pour
cibles Darwin, où il s'applique à la fois aux fichiers d'en-tête et aux bibliothèques). Voir le
--sysroot option pour plus d'informations.
-imultilib dir
Utilisez dir en tant que sous-répertoire du répertoire contenant les en-têtes C++ spécifiques à la cible.
-isystème dir
Rechercher dir pour les fichiers d'en-tête, après tous les répertoires spécifiés par -I mais avant le
répertoires système standard. Marquez-le comme répertoire système, afin qu'il obtienne le même
traitement spécial tel qu'il est appliqué aux répertoires système standard.
If dir commence par "=", puis le "=" sera remplacé par le préfixe sysroot ; voir
--sysroot et -isysroot.
-Je cite dir
Rechercher dir uniquement pour les fichiers d'en-tête demandés avec "#include "déposer""; ils ne sont pas
recherché "#includefichier>", avant tous les répertoires spécifiés par -I et avant le
répertoires système standard.
If dir commence par "=", puis le "=" sera remplacé par le préfixe sysroot ; voir
--sysroot et -isysroot.
-fdirectives-seulement
Lors du prétraitement, gérez les directives, mais ne développez pas les macros.
Le comportement de l'option dépend de la -E et -fprétraité options.
Avec -E, le prétraitement est limité au traitement des directives telles que "#define",
"#ifdef" et "#erreur". D'autres opérations de préprocesseur, telles que l'expansion de macros et
la conversion du trigraphe n'est pas effectuée. De plus, le -dD l'option est implicitement
activée.
Avec -fprétraité, la prédéfinition de la ligne de commande et de la plupart des macros intégrées est
désactivée. Les macros telles que "__LINE__", qui dépendent du contexte, sont gérées
normalement. Cela permet la compilation de fichiers préalablement prétraités avec "-E
-fdirectives-seulement".
Avec les deux -E et -fprétraité, les règles de -fprétraité avoir la priorité. Cette
permet un prétraitement complet des fichiers préalablement prétraités avec "-E
-fdirectives-seulement".
-fdollars-in-identifiants
Accepter $ dans les identifiants.
-fextended-identifiants
Acceptez les noms de caractères universels dans les identifiants. Cette option est activée par défaut
pour C99 (et versions C standard ultérieures) et C++.
-fno-canonical-system-headers
Lors du prétraitement, ne raccourcissez pas les chemins d'en-tête du système avec la canonisation.
-fprétraité
Indiquez au préprocesseur que le fichier d'entrée a déjà été prétraité. Cette
supprime des choses comme l'expansion de macro, la conversion de trigraphe, l'épissage de nouvelle ligne échappé,
et le traitement de la plupart des directives. Le préprocesseur reconnaît et supprime toujours
commentaires, afin que vous puissiez passer un fichier prétraité avec -C au compilateur sans
problèmes. Dans ce mode, le préprocesseur intégré n'est guère plus qu'un tokenizer
pour les extrémités avant.
-fprétraité est implicite si le fichier d'entrée a l'une des extensions .i, .ii or .mi.
Ce sont les extensions que GCC utilise pour les fichiers prétraités créés par -sauve-temps.
-ftabstop=largeur
Définissez la distance entre les taquets de tabulation. Cela aide le préprocesseur à signaler la colonne correcte
nombres dans les avertissements ou les erreurs, même si des tabulations apparaissent sur la ligne. Si la valeur est inférieure
supérieur à 1 ou supérieur à 100, l'option est ignorée. La valeur par défaut est 8.
-fdebug-cpp
Cette option n'est utile que pour le débogage de GCC. Lorsqu'il est utilisé avec -E, décharge le débogage
informations sur les cartes de localisation. Chaque jeton de la sortie est précédé du vidage de
la carte à laquelle appartient son emplacement. Le dump de la carte contenant l'emplacement d'un jeton
serait:
{"P":F ;"F":F ;"L": ;"C": ;"S": ;"M": ;"E": ,"loc": }
Lorsqu'il est utilisé sans -E, cette option n'a aucun effet.
-ftrack-macro-extension[=niveau]
Suivez les emplacements des jetons à travers les extensions de macro. Cela permet au compilateur d'émettre
diagnostic sur la pile d'extension de macro actuelle lorsqu'une erreur de compilation se produit dans
une macro-extension. L'utilisation de cette option fait consommer au préprocesseur et au compilateur
plus de mémoire. Les niveau paramètre peut être utilisé pour choisir le niveau de précision du jeton
suivi de localisation diminuant ainsi la consommation de mémoire si nécessaire. Valeur 0 of
niveau désactive cette option comme si non -ftrack-macro-extension était présent le
la ligne de commande. Valeur 1 suit les emplacements des jetons dans un mode dégradé pour le plaisir de
surcharge mémoire minimale. Dans ce mode, tous les jetons résultant de l'expansion d'un
argument d'une macro de type fonction ont le même emplacement. Valeur 2 jetons de suivi
emplacements complètement. Cette valeur est la plus gourmande en mémoire. Lorsque cette option est donnée
pas d'argument, la valeur du paramètre par défaut est 2.
Notez que "-ftrack-macro-expansion=2" est activé par défaut.
-fexec-jeu de caractères=jeu de caractères
Définit le jeu de caractères d'exécution, utilisé pour les constantes de chaîne et de caractère. Le défaut
est UTF-8. jeu de caractères peut être n'importe quel encodage pris en charge par la bibliothèque "iconv" du système
routine.
-fwide-exec-charset=jeu de caractères
Définit le jeu de caractères d'exécution large, utilisé pour les constantes de chaîne et de caractère larges.
La valeur par défaut est UTF-32 ou UTF-16, selon la largeur de "wchar_t". Comme
avec -fexec-jeu de caractères, jeu de caractères peut être n'importe quel encodage pris en charge par "iconv" du système
routine de la bibliothèque ; cependant, vous aurez des problèmes avec les encodages qui ne correspondent pas
exactement dans "wchar_t".
-finput-charset=jeu de caractères
Définir le jeu de caractères d'entrée, utilisé pour la traduction à partir du jeu de caractères de l'entrée
au jeu de caractères source utilisé par GCC. Si les paramètres régionaux ne le spécifient pas, ou GCC
ne peut pas obtenir ces informations à partir des paramètres régionaux, la valeur par défaut est UTF-8. Cela peut être
remplacé par les paramètres régionaux ou cette option de ligne de commande. Actuellement, la commande-
L'option de ligne est prioritaire en cas de conflit. jeu de caractères peut être n'importe quel encodage
pris en charge par la routine de bibliothèque "iconv" du système.
-frépertoire-de-travail
Activer la génération de marqueurs de ligne dans la sortie du préprocesseur qui permettra au compilateur
connaître le répertoire de travail courant au moment du prétraitement. Lorsque cette option est
activé, le préprocesseur émettra, après le marqueur de ligne initial, un deuxième marqueur de ligne
avec le répertoire de travail courant suivi de deux barres obliques. GCC utilisera ce
répertoire, lorsqu'il est présent dans l'entrée prétraitée, comme le répertoire émis en tant que
le répertoire de travail actuel dans certains formats d'informations de débogage. Cette option est
implicitement activé si les informations de débogage sont activées, mais cela peut être inhibé avec
la forme niée -fno-répertoire-de-travail. Si l' -P flag est présent dans la commande
line, cette option n'a aucun effet, car aucune directive "#line" n'est émise.
-fno-show-colonne
N'imprimez pas les numéros de colonne dans les diagnostics. Cela peut être nécessaire si le diagnostic est
étant analysé par un programme qui ne comprend pas les numéros de colonne, comme
déjagnu.
-A prédicat=répondre
Faire une assertion avec le prédicat prédicat et répond répondre. Ce formulaire est
préféré à l'ancienne forme -A prédicat(répondre), qui est toujours pris en charge, car il
n'utilise pas de caractères spéciaux shell.
-A -prédicat=répondre
Annuler une assertion avec le prédicat prédicat et répond répondre.
-dCHARS
CARACTÈRES est une séquence d'un ou plusieurs des caractères suivants, et ne doit pas être
précédé d'un espace. Les autres caractères sont interprétés par le compilateur proprement dit, ou
réservées aux futures versions de GCC, et sont donc ignorées en silence. Si vous spécifiez
personnages dont le comportement est en conflit, le résultat est indéfini.
M Au lieu de la sortie normale, générez une liste de #define directives pour tous les
macros définies lors de l'exécution du préprocesseur, y compris les macros prédéfinies
macro. Cela vous donne un moyen de découvrir ce qui est prédéfini dans votre version de
le préprocesseur. En supposant que vous n'avez pas de fichier foo.h, la commande
toucher foo.h; cpp -dM foo.h
affichera toutes les macros prédéfinies.
Si vous utilisez -dM sans -E option, -dM est interprété comme synonyme de
-fdump-rtl-mach.
D J'aime M sauf à deux égards : il fait ne sauraient inclure les macros prédéfinies, et il
sorties tous les deux le #define directives et le résultat du prétraitement. Les deux sortes
de sortie aller au fichier de sortie standard.
N J'aime D, mais n'émettent que les noms des macros, pas leurs extensions.
I Sortie #comprendre directives en plus du résultat du prétraitement.
U J'aime D sauf que seules les macros qui sont développées, ou dont la définition est testée
dans les directives du préprocesseur, sont affichés ; la sortie est retardée jusqu'à l'utilisation ou
test de la macro ; et #undef les directives sont également sorties pour les macros testées mais
indéfini à l'époque.
-P Empêcher la génération de marqueurs de ligne dans la sortie du préprocesseur. Cela pourrait être
utile lors de l'exécution du préprocesseur sur quelque chose qui n'est pas du code C, et sera envoyé
à un programme qui pourrait être confondu par les marqueurs de ligne.
-C Ne jetez pas les commentaires. Tous les commentaires sont transmis au fichier de sortie, sauf
pour les commentaires dans les directives traitées, qui sont supprimés avec la directive.
Vous devez être préparé aux effets secondaires lors de l'utilisation -C; cela amène le préprocesseur à
traiter les commentaires comme des jetons à part entière. Par exemple, les commentaires apparaissant à la
début de ce qui serait une ligne directive ont pour effet de transformer cette ligne en une
ligne source ordinaire, puisque le premier jeton sur la ligne n'est plus un #.
-CC Ne supprimez pas les commentaires, y compris pendant l'expansion des macros. C'est comme -C, sauf
que les commentaires contenus dans les macros sont également transmis au fichier de sortie où
la macro est étendue.
En plus des effets secondaires de la -C option, la -CC l'option provoque tout le style C++
commentaires dans une macro à convertir en commentaires de style C. C'est pour éviter plus tard
l'utilisation de cette macro de commenter par inadvertance le reste de la ligne source.
Le -CC L'option est généralement utilisée pour prendre en charge les commentaires Lint.
-traditionnel-cpp
Essayez d'imiter le comportement des préprocesseurs C à l'ancienne, par opposition à l'ISO C
préprocesseurs.
-trigraphes
Traiter les séquences de trigraphes.
-remapper
Activer le code spécial pour contourner les systèmes de fichiers qui n'autorisent que des fichiers très courts
noms, tels que MS-DOS.
--Aidez-moi
--target-aide
Imprimez du texte décrivant toutes les options de la ligne de commande au lieu de prétraiter quoi que ce soit.
-v Mode verbeux. Imprimez le numéro de version de GNU CPP au début de l'exécution, et
signaler la forme finale du chemin d'inclusion.
-H Imprimez le nom de chaque fichier d'en-tête utilisé, en plus des autres activités normales. Chaque
le nom est en retrait pour montrer à quel point le #comprendre pile c'est. En-tête précompilé
les fichiers sont également imprimés, même s'ils s'avèrent invalides ; un précompilé invalide
le fichier d'en-tête est imprimé avec ...X et valide avec ! ... .
-version
--version
Imprimez le numéro de version de GNU CPP. Avec un tiret, procédez au prétraitement comme d'habitude.
Avec deux tirets, sortez immédiatement.
ENVIRONNEMENT
Cette section décrit les variables d'environnement qui affectent le fonctionnement de CPP. Vous pouvez
utilisez-les pour spécifier des répertoires ou des préfixes à utiliser lors de la recherche de fichiers d'inclusion, ou pour
sortie de dépendance de contrôle.
Notez que vous pouvez également spécifier des lieux de recherche à l'aide d'options telles que -I, et contrôle
sortie de dépendance avec des options telles que -M. Celles-ci sont prioritaires sur les variables d'environnement,
qui à leur tour ont préséance sur la configuration de GCC.
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
La valeur de chaque variable est une liste de répertoires séparés par un caractère spécial, beaucoup
comme PATH, dans lequel rechercher les fichiers d'en-tête. Le caractère spécial,
"PATH_SEPARATOR", dépend de la cible et est déterminé au moment de la construction de GCC. Pour Microsoft
Cibles basées sur Windows, il s'agit d'un point-virgule, et pour presque toutes les autres cibles, il s'agit d'un
côlon.
CPATH spécifie une liste de répertoires à rechercher comme si spécifié avec -I, mais
après tous les chemins donnés avec -I options sur la ligne de commande. Cette variable d'environnement
est utilisé quelle que soit la langue en cours de prétraitement.
Les variables d'environnement restantes s'appliquent uniquement lors du prétraitement du
langue indiquée. Chacun spécifie une liste de répertoires à rechercher comme si
spécifié avec -isystème, mais après tous les chemins donnés avec -isystème options sur le
ligne de commande.
Dans toutes ces variables, un élément vide demande au compilateur de rechercher son
directeur de travail. Des éléments vides peuvent apparaître au début ou à la fin d'un chemin. Pour
exemple, si la valeur de CPATH est ":/special/include", qui a le même effet que
-NS. -Je/spécial/inclus.
DEPENDANCES_OUTPUT
Si cette variable est définie, sa valeur spécifie comment afficher les dépendances pour Make based
sur les fichiers d'en-tête non système traités par le compilateur. Les fichiers d'en-tête système sont
ignoré dans la sortie de dépendance.
La valeur de DEPENDANCES_OUTPUT peut être juste un nom de fichier, auquel cas les règles Make
sont écrites dans ce fichier, en devinant le nom cible à partir du nom du fichier source. Ou la
valeur peut avoir la forme filet l'objectif, auquel cas les règles sont écrites dans le fichier filet
en utilisant l'objectif comme nom cible.
En d'autres termes, cette variable d'environnement équivaut à combiner les options -MM
et -MF, avec une option -MT interrupteur aussi.
SUNPRO_DÉPENDANCES
Cette variable est la même que DEPENDANCES_OUTPUT (voir ci-dessus), sauf que le système
les fichiers d'en-tête ne sont pas ignorés, cela implique donc -M plutôt que -MM. Cependant, l'
la dépendance vis-à-vis du fichier d'entrée principal est omise.
Utiliser cpp en ligne à l'aide des services onworks.net