2011-02-04 21 views
48

Estoy usando una biblioteca de código abierto que parece tener muchas directivas de preprocesamiento para admitir muchos lenguajes además de C. Para poder estudiar qué está haciendo la biblioteca, me gustaría ver el código C que estoy compilando después del preprocesamiento, más como lo que escribiría.¿Puede gcc salir el código C después del preprocesamiento?

¿Puede gcc (o cualquier otra herramienta comúnmente disponible en Linux) leer esta biblioteca pero el código de salida C que tiene el preprocesamiento convertido a lo que sea y también es legible por un ser humano?

+0

El código preprocesado no tendrá ningún directivas del preprocesador más, pero estoy bastante seguro de que será mucho, mucho menos legible que antes de ser procesada previamente ... –

+0

@AlexW - Eso depende * completamente * de cuán horriblemente las personas que escriben el código abusaron del preprocesador. –

Respuesta

45

cpp es el preprocesador.

Ejecute cpp filename.c para generar el código preprocesado, o mejor, redirigirlo a un archivo con .

130

Sí. Páselo la opción -E. Esto generará un código fuente preprocesado.

+7

Si los comandos del compilador ya tienen un parámetro como '-o something.o', es posible que también desee cambiarlo a' -o something.i'. De lo contrario, la salida preprocesada estará en el archivo '.o'. –

+0

pase esta bandera a 'gcc' Quiere decir – user3282276

+0

@TorKlingberg ¿Puedo hacer esto para múltiples archivos a la vez? – user2808264

4

Estoy usando gcc como preprocesador (para archivos html). Hace justo lo que quiere. Amplía las directivas "# -" y luego genera un archivo legible. (NINGUNO de los otros preprocesadores en C/HTML que he intentado hacer esto - concatenan líneas, asfixia en caracteres especiales, etc.) Asumiendo que tiene instalado gcc, la línea de comando es:

gcc -E -xc -P -C -traditional-cpp code_before.cpp> code_after.cpp

(No tiene que ser 'cpp'). Hay una excelente descripción de este uso en http://www.cs.tut.fi/~jkorpela/html/cpre.html.

La "-traditional-cpp" conserva las pestañas de espacio en blanco &.

3

Run:

gcc -E <file>.c 

o

g++ -E <file>.cpp 
Cuestiones relacionadas