预处理输出

如何查看由 C预处理器产生的输出,然后再将其转换为目标文件?

我想看看宏定义对我的代码做了什么。

65674 次浏览

这取决于您使用的编译器。
使用 GCC,您可以在命令行上指定 -E标志,让编译器生成预处理器输出。

gcc -E file.c

或者

g++ -E file.cpp

会为你做这件事。E 开关迫使编译器在预处理阶段之后停止,将此时所有的输出转换为标准输出。

注意: 您肯定有一些 # include 指令。所包含的文件也进行了预处理,因此您可能会得到大量输出。

对于 Visual C + + ,开关是/E,它将预处理器输出显示在屏幕上。

对海湾合作委员会来说,

gcc -E -dM file.c

或者

g++ -E -dM file.cpp

应该可以。- dM,作为 GNU 预处理器手册 把它,应该为预处理器执行期间定义的所有宏(包括预定义的宏)生成一个“ # Definition”指令列表。

你可以看看这里描述的我的剧本:

Http://mosermichael.github.io/cstuff/all/projects/2011/09/16/preprocessor.html

它将预处理器输出格式化为一个(希望)可读的 html 文档: 文件中标记了由于预处理器而不同的行。

您也可以直接调用 C 预处理器。

cpp infile outfile

查看 man cpp了解更多信息。

如果使用 Jetbrain 的 CLion,可以使用动作“ clangd: Preprocess current TU”

shift shift开始敲击键盘。

action popup

最好将它分配到一个快捷方式,以便在首选项中进行更简单的重用-> keymap:

enter image description here

大声呼叫 Marcosbento

PS: TU 的意思是“翻译单元”(见 LLVM 翻译单元)