我需要解析头文件。 我的目标是从头文件中搜索特定的结构体并提取结构体变量的值和偏移量。
任何人都可以建议通过省略注释来解析头文件的最佳方法以及如何从头中解析宏吗?
最佳答案
解析 C++ 很困难。您可能想要使用现有的解析器。我知道 4 个可能有用的:
- Edison Design Group 前端
- Clang 的 C++ 解析器
- DMS 软件重组工具包及其 C++14 前端
- GCC(通过 Melt)
其中大多数不会“解析”宏;他们想使用预处理器扩展它们。因此宏和 PP 条件从解析树中消失。 DMS 可以进行“有限”预处理,并收集/保留在结构良好的位置以及它们经常出现的各种位置中找到的预处理器指令和宏。
解析头文件确实很困难;它们往往会加载来自许多以前版本的软件的条件语句和垃圾,以及来自特定供应商的习惯用法。 (微软的标题中有一些非常奇怪的东西)。除非您正在谈论解析您的头文件,否则请确保检查您选择的工具是否可以处理您实际正在处理的 C++ 方言。
关于C++头文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28825628/