Gcc può emettere il codice C dopo la pre-elaborazione?

Sto usando una libreria open source che sembra avere molte direttive di pre-elaborazione per supportare molte lingue diverse da C. Per poter studiare cosa sta facendo la libreria mi piacerebbe vedere il codice C che sto compilando dopo la pre-elaborazione , più come quello che scriverei.

Gcc (o qualsiasi altro strumento comunemente disponibile in Linux) può leggere questa libreria ma generare un codice C che ha il preprocessore convertito in qualsiasi cosa ed è anche leggibile da un essere umano?

Sì. Passa a gcc l’opzione -E . Ciò produrrà il codice sorgente preelaborato.

cpp è il preprocessore.

Esegui cpp filename.c per generare il codice preelaborato, o meglio, reindirizzarlo su un file con cpp filename.c > filename.preprocessed .

Sto usando gcc come preprocessore (per i file html). Fa solo quello che vuoi. Espande le direttive “# -“, quindi restituisce un file leggibile. (NESSUNO degli altri preprocessori C / HTML che ho provato a fare: concatenare le linee, soffocare caratteri speciali, ecc.) Dopo aver installato gcc, la riga di comando è:

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

(Non deve essere ‘cpp’.) C’è un’eccellente descrizione di questo utilizzo su http://www.cs.tut.fi/~jkorpela/html/cpre.html .

“-Traditional-cpp” conserva spazi e tabulazioni.

Correre:

 gcc -E .c 

o

 g++ -E .cpp