预处理后gcc能输出C代码吗?
我正在使用一个开源的库,似乎有很多预处理指令来支持C以外的其他语言。所以我可以研究库在做什么,我希望看到预编译后编译的C代码,更像我写的东西。
gcc(或其他Linux上常用的工具)可以读取这个库,但输出的C代码已经被预处理转换为任何东西,并且也可以被人类读取?
cpp
是预处理器。
运行cpp filename.c
来输出预处理的代码,或者更好的,将其redirect到一个文件,使用cpp filename.c > filename.preprocessed
。
是。 传递-E
选项。 这将输出预处理的源代码。
我使用gcc作为预处理器(用于html文件)。它只是你想要的。 它扩展了“# – ”指令,然后输出一个可读的文件。 (我试过的其他C / HTML预处理器都没有这样做 – 他们连接线,扼杀特殊字符,等等)假设你已经安装了gcc,命令行是:
gcc -E -xc -P -C -traditional-cpp code_before.cpp> code_after.cpp
(不一定是'cpp')。这个用法在http://www.cs.tut.fi/~jkorpela/html/cpre.html有很好的描述。;
“-traditional-cpp”保留空格和制表符。
跑:
gcc -E <file>.c
要么
g++ -E <file>.cpp