Disons que j'ai un fichier source avec de nombreuses directives de préprocesseur. Est-il possible de voir à quoi il ressemble après que le préprocesseur en a fini?
206
Disons que j'ai un fichier source avec de nombreuses directives de préprocesseur. Est-il possible de voir à quoi il ressemble après que le préprocesseur en a fini?
Réponses:
cl.exe
, l'interface de ligne de commande de Microsoft Visual C ++, dispose de trois options différentes pour la sortie du fichier prétraité (d'où l'incohérence dans les réponses précédentes sur Visual C ++):/E
: prétraiter vers stdout (similaire à l'option -E de GCC)/P
: prétraiter vers un fichier/EP
: préprocess pour stdout sans directives #lineSi vous souhaitez prétraiter un fichier sans directives #line, combinez les options
/P
et/EP
.la source
/P
cela supprimera la génération des fichiers obj. Donc, si vous mettez des/P
options, vous risquez d'obtenir un lien indiquant que certains fichiers obj sont introuvables car ils ne sont en fait pas générés du tout.VS Developer command prompt
et NON dansCommand prompt
lorsque vous essayez d'utiliser MS compiler (cl
). Le compilateur n'est pas disponible dans l'invite de commande classique.La plupart des compilateurs ont la possibilité d'exécuter simplement le préprocesseur. par exemple , gcc fournit -E:
Vous pouvez donc simplement exécuter:
Si vous ne trouvez pas une telle option, vous pouvez également trouver simplement le préprocesseur C sur votre machine. Il est généralement appelé cpp et est probablement déjà sur votre chemin. Invoquez-le comme ceci:
S'il y a des en-têtes que vous devez inclure à partir d'autres répertoires, vous pouvez passer -I / path / à / include / dir à l'un ou l'autre, comme vous le feriez avec une compilation régulière.
Pour Windows, je laisserai à d'autres affiches le soin de répondre car je n'y suis pas expert.
la source
Cliquez avec le bouton droit sur le fichier dans l'Explorateur de solutions, accédez à Propriétés. Sous Configuration Properties-> C / C ++ -> Preprocessor, "Generate Preprocessed File" est ce que vous recherchez. Cliquez ensuite avec le bouton droit sur le fichier dans l'Explorateur de solutions et sélectionnez «Compiler». Le fichier prétraité est créé dans le répertoire de sortie (ex: Release, Debug) avec une extension .i (merci à Steed pour son commentaire).
la source
Release
,Debug
) avec une extension.i
.Vous devez généralement effectuer un post-traitement sur la sortie du préprocesseur, sinon toutes les macros se développent simplement sur une seule ligne, ce qui est difficile à lire et à déboguer. Pour le code C, quelque chose comme ce qui suit suffirait:
Pour le code C ++, c'est en fait beaucoup plus difficile. Pour GCC / g ++, j'ai trouvé ce script Perl utile.
la source
Je ne sais rien du compilateur Microsoft, mais sur GCC, vous pouvez utiliser ceci:
Si vous voulez voir des commentaires, utilisez ceci:
Plus d'options disponibles sur cette page .
la source
Essayez
cl /EP
si vous utilisez le compilateur C ++ de Microsoft.la source
Dans Visual Studio, vous pouvez compiler un fichier (ou projet) avec / P.
la source
Comme bk1e et Andreas M. ont répondu, l'option / P pour le compilateur le fera prétraiter un fichier. Cependant, dans mon projet utilisant VS2005 et Platform Builder (pour un processeur ARM intégré), le projet ne présentait pas d'option dans la boîte de dialogue (comme décrit par Jim B) pour activer cette option.
Je pouvais exécuter CL manuellement et ajouter / P, mais cela a échoué car je ne connaissais pas toutes les options de ligne de commande appropriées qui étaient invisiblement activées par Platform Builder pendant la génération complète. J'avais donc besoin de connaître toutes ces options.
Ma solution était d'aller chercher dans le fichier build.log, et de trouver la ligne exécutée
CL blah-blah-blah myfile.c
J'ai copié cette ligne dans le presse-papiers. La partie "bla-bla-bla" contenait les options de construction et était énorme.
De retour dans l'EDI, j'ai fait un clic droit sur monfichier.c, j'ai choisi "Ouvrir la fenêtre de construction", puis dans cette fenêtre j'ai collé la ligne de commande de construction et ajouté un "/ P".
CL /P blah-blah-blah myfile.c
Terminé. Le fichier myfile.i a été produit, qui contenait la sortie du préprocesseur.
la source
CPIP est un nouveau préprocesseur C / C ++ écrit en Python. Si vous souhaitez une représentation visuelle détaillée d'un fichier prétraité, essayez-le.
la source
Sous Windows OS, une réponse simple d'une ligne à cette question consiste à utiliser la commande ci-dessous dans l'invite DOS pour voir le fichier prétraité:
Cela générera un fichier appelé myprogram.i . Ouvrez-le et recherchez vos préprocesseurs étendus.
la source