任何人都可以告诉我gcc源代码中的哪个函数负责在C文件中查找宏并用实际值重新生成它?
我想知道函数,因为我必须通过对其进行更改来记录日志,因此最后我的日志文件将包含所有宏的使用位置及其行号。
答案 0 :(得分:0)
在生成输出文件之前,它由预处理器完成。如果你想看看它在做什么,试试gcc -E
来自man gcc:
-E Stop after the preprocessing stage; do not run the compiler proper.
The output is in the form of preprocessed source code, which is sent to
the standard output.
答案 1 :(得分:0)
我建议使用clang
来完成此类任务。它有很好的文档记录,您无需更改其源代码,因为它可以通过插件系统进行扩展。
在您的情况下,您可以基于PPCallbacks
类创建一个插件,并覆盖其MacroExpanded
方法,以及您认为有用的任何其他方法。 This是一个简单的起点。