203 votes

Fichier source C / C ++ après le prétraitement

Disons que j'ai un fichier source avec de nombreuses directives de préprocesseur. Est-il possible de voir à quoi cela ressemble après le préprocesseur?

145voto

bk1e Points 13737

cl.exe, l'interface de ligne de commande Microsoft Visual C++, a trois options différentes pour reproduire la séquence d'un fichier (d'où l'incohérence dans les réponses précédentes sur Visual C++):

118voto

tgamblin Points 25755

La plupart des compilateurs ont une option de simplement exécuter le préprocesseur. par exemple, gcc-E:

   -E  Stop after the preprocessing stage; do not run the compiler proper.  
       The output is in the form of preprocessed source code, which is sent
       to the standard output.

Donc, il vous suffit d'exécuter:

gcc -E foo.c

Si vous ne pouvez pas trouver une telle option, vous pouvez également trouver le préprocesseur C sur votre machine. Il est généralement appelé rpc et est probablement déjà dans votre chemin. L'appeler comme ceci:

cpp foo.c

Si il y a des titres que vous devez comprendre à partir d'autres répertoires , vous pouvez passer -I/chemin/vers/include/dir pour l'un de ces, tout comme vous le feriez avec un régulier de la compilation.

Pour Windows, je vais laisser à d'autres affiches de fournir des réponses que je ne suis pas expert là.

96voto

Jim Buck Points 10839

Cliquez avec le bouton droit sur le fichier dans l'Explorateur de solutions, allez à Propriétés. Sous Propriétés de configuration -> C / C ++ -> Préprocesseur, "Générer un fichier prétraité" est ce que vous recherchez.

18voto

ididak Points 4208

Vous avez généralement besoin de faire un post-traitement sur la sortie du préprocesseur, sinon toutes les macros se développent en un seul segment, ce qui est difficile à lire et à déboguer. Pour le code C, quelque chose comme le suivant suffirait:

 gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c
 

Pour le code C ++, c'est en fait beaucoup plus difficile. Pour GCC / g ++, j'ai trouvé ce script perl utile.

8voto

Atempcode Points 311

essayez cl / EP si vous utilisez le compilateur MS Cpp.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X