¿Puede gcc salir el código C después del preprocesamiento?

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 comstackndo después de preprocesar , más como lo que escribiría.

¿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?

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

cpp es el preprocesador.

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

Estoy usando gcc como preprocesador (para archivos html). Hace exactamente lo que quiere. Amplía las directivas “# -” y luego genera un archivo legible. (NINGUNO de los otros preprocesadores en C / HTML que he intentado hace esto: concatenan líneas, se atragantan con caracteres especiales, etc.) Asumiendo que tienes 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 .

El “-traditional-cpp” conserva el espacio en blanco y las tabs.

Correr:

 gcc -E .c 

o

 g++ -E .cpp