C++头文件解析
C++ header file parsing
我需要解析一个头文件。
我的目标是从头文件中搜索具体的结构,并提取结构变量的值和偏移量。
谁能建议通过省略注释来解析头文件的最佳方法以及如何从头文件中解析宏?
解析 C++ 很困难。您可能希望使用现有的解析器。我知道 4 个可能有用:
- 爱迪生设计集团前端
- Clang 的 C++ 解析器
- DMS Software Reengineering Toolkit 及其 C++14 前端
- GCC(通过 Melt)
其中大部分不会 "parse" 宏;他们想使用预处理器 展开 它们。所以宏和 PP 条件从解析树中消失了。
DMS 可以进行 "limited" 预处理,并且 collect/keep 预处理器指令和宏可以在结构良好的地方和它们经常出现的各种地方找到。
解析 header 文件真的 困难;它们往往会加载许多以前版本的软件的条件语句和垃圾,以及来自特定供应商的习语。 (MS 在他们的 header 中有一些非常奇怪的东西)。除非您谈论的是解析 您的 header 文件,否则请确保检查您选择的工具是否可以处理您实际处理的 C++ 方言。
我需要解析一个头文件。 我的目标是从头文件中搜索具体的结构,并提取结构变量的值和偏移量。
谁能建议通过省略注释来解析头文件的最佳方法以及如何从头文件中解析宏?
解析 C++ 很困难。您可能希望使用现有的解析器。我知道 4 个可能有用:
- 爱迪生设计集团前端
- Clang 的 C++ 解析器
- DMS Software Reengineering Toolkit 及其 C++14 前端
- GCC(通过 Melt)
其中大部分不会 "parse" 宏;他们想使用预处理器 展开 它们。所以宏和 PP 条件从解析树中消失了。 DMS 可以进行 "limited" 预处理,并且 collect/keep 预处理器指令和宏可以在结构良好的地方和它们经常出现的各种地方找到。
解析 header 文件真的 困难;它们往往会加载许多以前版本的软件的条件语句和垃圾,以及来自特定供应商的习语。 (MS 在他们的 header 中有一些非常奇怪的东西)。除非您谈论的是解析 您的 header 文件,否则请确保检查您选择的工具是否可以处理您实际处理的 C++ 方言。