谁能告诉我 gcc 源代码中的哪个函数负责在 C 文件中查找宏并将其替换为实际值?
我想知道该功能,因为我必须通过对其进行更改来获取日志,以便最后我的日志文件将包含所有宏的使用位置及其行号。
谁能告诉我 gcc 源代码中的哪个函数负责在 C 文件中查找宏并将其替换为实际值?
我想知道该功能,因为我必须通过对其进行更改来获取日志,以便最后我的日志文件将包含所有宏的使用位置及其行号。
它由预处理器在生成输出文件之前完成。如果你想看看它在做什么,试试 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.
我建议使用clang
这种类型的任务。它有很好的文档记录,您无需更改其源代码,因为它可以通过插件系统进行扩展。
在您的情况下,您基于PPCallbacks
该类创建一个插件并覆盖其MacroExpanded
方法以及您认为有用的任何其他方法。这是一个简单的起点。