cpp |
Pré-Processeur C |
---|---|
Linux | Externe |
Syntaxe
cpp [options] file... |
Paramètres
Nom | Description |
---|---|
-pass-exit-codes | Ce paramètre permet de sortir avec le code d'erreur le plus élevé d'une phase. |
--help | Ce paramètre permet d'afficher ces informations. |
--target-help | Ce paramètre permet d'afficher les options de ligne de commande spécifiques à la cible. |
--help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...] | Ce paramètre permet d'afficher des types spécifiques d'options de ligne de commande. (Utilisez '-v --help' pour afficher les options de ligne de commande des sous-processus). |
--version | Ce paramètre permet d'afficher les informations sur la version du compilateur. |
-dumpspecs | Ce paramètre permet d'afficher toutes les chaînes de caractères spécifications intégrées. |
-dumpversion | Ce paramètre permet d'afficher la version du compilateur. |
-dumpmachine | Ce paramètre permet d'afficher le processeur cible du compilateur. |
-print-search-dirs | Ce paramètre permet d'afficher les répertoires dans le chemin de recherche du compilateur. |
-print-libgcc-file-name | Ce paramètre permet d'afficher le nom de la bibliothèque compagnon du compilateur. |
-print-file-name=lib | Ce paramètre permet d'afficher le chemin complet de la bibliothèque lib. |
-print-prog-name=prog | Ce paramètre permet d'afficher le chemin complet de composante du compilateur prog. |
-print-multiarch | Ce paramètre permet d'afficher le triplet GNU normalisé de la cible, utilisé comme composante dans le chemin de la bibliothèque. |
-print-multi-directory | Ce paramètre permet d'afficher le répertoire racine des versions de libgcc. |
-print-multi-lib | Ce paramètre permet d'afficher la cartographie entre les options de ligne de commande et plusieurs répertoires de recherche de bibliothèque. |
-print-multi-os-directory | Ce paramètre permet d'afficher le chemin relatif vers les bibliothèques du système d'exploitation. |
-print-sysroot | Ce paramètre permet d'afficher le répertoire des bibliothèques cibles. |
-print-sysroot-headers-suffix | Ce paramètre permet d'afficher le suffixe sysroot utilisé pour rechercher les entêtes. |
-Wa,options | Ce paramètre permet de transmettre des options séparées par des virgules à l'assembleur. |
-Wp,options | Ce paramètre permet de transmettre des options séparées par des virgules au préprocesseur. |
-Wl,options | Ce paramètre permet de transmettre des options séparées par des virgules à l'éditeur de liens. |
-Xassembler arg | Ce paramètre permet de passer arg à l'assembleur. |
-Xpreprocessor arg | Ce paramètre permet de passer arg au préprocesseur. |
-Xlinker arg | Ce paramètre permet de passer arg à l'éditeur de liens. |
-save-temps | Ce paramètre permet de ne pas supprimer les fichiers intermédiaires. |
-save-temps=arg | Ce paramètre permet de ne pas supprimer les fichiers intermédiaires. |
-no-canonical-prefixes | Ce paramètre permet de ne pas canoniser les chemins lors de la construction de préfixes relatifs à d'autres composantes gcc. |
-pipe | Ce paramètre permet d'utiliser des tuyaux plutôt que des fichiers intermédiaires. |
-time | Ce paramètre permet de chronométrer l'exécution de chaque sous-processus. |
-specs=file | Ce paramètre permet de remplacer les spécifications intégrées par le contenu de file. |
-std=standard | Ce paramètre permet de supposer que les sources d'entrée sont pour standard. |
--sysroot=directory | Ce paramètre permet d'utiliser directory comme répertoire racine pour les entêtes et les bibliothèques. |
-B directory | Ce paramètre permet d'ajouter directory aux chemins de recherche du compilateur. |
-v | Ce paramètre permet d'afficher les programmes appelés par le compilateur. |
-### | Ce paramètre permet d'afficher les programmes appelés par le compilateur mais avec les options citées et les commandes non exécutées. |
-E | Ce paramètre permet de prétraiter uniquement ; ne pas compiler, assembler ou lier. |
-S | Ce paramètre permet de compiler uniquement ; ne pas assembler ou lier. |
-c | Ce paramètre permet de compiler et assembler, mais ne pas lier. |
-o file | Ce paramètre permet de placer la sortie dans file. |
-pie | Ce paramètre permet de créer un exécutable indépendant de la position. |
-shared | Ce paramètre permet de créer une bibliothèque partagée. |
-x language | Ce paramètre permet d'indiquer la langue des fichiers d'entrée suivants : Les langages de programmation autorisés incluent : c c++ assembler none 'none' signifie revenir au comportement par défaut consistant à deviner le langage de programmation en fonction de l'extension du fichier. |
Description
Cette commande permet de lancer le pré-processeur de compilateur de langage de programmation C.
Remarques
- Préprocesseur de C/C++ pour la gestion des macros : La commande cpp est le préprocesseur utilisé avant la compilation proprement dite des programmes C ou C++. Elle s'occupe de l'expansion des macros définies avec #define et remplace les occurrences de ces macros dans le code source par leurs valeurs définies. Exemple :
- Traitement des directives de préprocesseur : Le préprocesseur cpp gère plusieurs directives du préprocesseur, telles que #include, #define, #ifdef, #ifndef, #endif,... Il est responsable de l'inclusion des fichiers d'en-tête et de la condition de compilation. Par exemple, #include insère le contenu d'un fichier d'entête dans le fichier source avant la compilation :
- #include <stdio.h>
- Suppression des commentaires dans le code source : Un autre rôle essentiel de cpp est de supprimer les commentaires du code source. Que ce soit des commentaires sur une seule ligne (//) ou des commentaires multi-lignes (/*...*/), le préprocesseur les retire avant que le compilateur ne prenne en charge le code. Cela permet de simplifier la syntaxe et de réduire la taille du code source pour le compilateur.
- Utilisation avec -E pour afficher le code préprocesseur : L'option -E de cpp permet d'afficher le code source après prétraitement, sans le compiler. Cela permet de visualiser le résultat des transformations opérées par le préprocesseur, comme l'expansion des macros et l'inclusion des fichiers d'entête. Exemple :
- Contrôle des macros conditionnelles : Le préprocesseur cpp permet de contrôler la compilation conditionnelle grâce aux directives comme #ifdef et #ifndef. Par exemple, vous pouvez inclure certaines parties du code uniquement si une macro est définie :
- #ifdef DEBUG
- printf("Mode de déboguage\n");
- #endif
- Traitement des fichiers d'entête avec #include : cpp gère les fichiers d'en-tête à l'aide de la directive #include. Elle permet d'inclure des fichiers externes qui contiennent des déclarations de fonctions, des définitions de structures, des constantes, etc. Cela permet d'organiser le code en séparant les définitions des implémentations. Par exemple :
- #include "mylibrary.h"
- Optimisation avec les directives de préprocesseur : Le préprocesseur cpp est souvent utilisé pour des optimisations conditionnelles, en activant certaines parties du code uniquement pour des compilations spécifiques. Par exemple, avec des directives comme #ifdef, #else et #endif, il est possible de désactiver certaines parties du code pour la version de production, et de les activer pour la version de développement. Exemple :
- #ifdef DEBUG
- printf("Information de déboguage\n");
- #endif
- Utilisation de -P pour supprimer les fichiers d'entête : L'option -P permet à cpp de supprimer les fichiers d'entête du résultat, générant uniquement le code prétraité sans les instructions #include elles-mêmes. Cela peut être utile pour simplifier la lecture du code source après prétraitement, sans inclure les détails des fichiers externes. Exemple :
cpp -dM fichier.c |
Cette commande affiche toutes les macros définies dans le fichier source fichier.c.
cpp remplace cette directive par le contenu du fichier stdio.h.
cpp -E fichier.c |
Cela affiche le code source après l'expansion des macros et l'inclusion des fichiers.
Si la macro DEBUG est définie, le code à l'intérieur de #ifdef sera inclus dans le fichier source.
Cela inclut le fichier mylibrary.h dans le fichier source avant la compilation.
cpp -P fichier.c |
Cela supprime toutes les directives #include dans le résultat, mais conserve l'expansion des macros et la structure du code.
Dernière mise à jour : Mercredi, le 5 Janvier 2022