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?
Réponses
Trop de publicités?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++):
-
/E
: prétraiter vers stdout (similaire à GCC de l'option-E) -
/P
: prétraiter de fichier -
/EP
: prétraiter à stdout sans directives #line
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à.
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.