0

是否有用于 Visual C++ 编译器的gcc-xml等效或类似工具,可以反映 C++ 源代码的内部结构?

我的目标是通过使用 C++(本机 C++)源或头文件作为输入来生成输出,这样:

  1. 处理所有预处理器指令。(这已经可以通过 /P、/E 或 /EP 编译器开关来实现。)
  2. 所有typedefs 都扩展为它们的基本类型。
  3. 获得所有变量/函数/类/成员名称及其签名的列表。
  4. 可选地,可以获得所有实例化模板类的列表。

例如typedef,这段代码:

typedef string my_type;
my_type s1;

扩展为:

std::basic_string<char, std::char_traits<char>, std::allocator<char> > s1;

或者可以让我做到这一点的东西。

我知道这可以通过使用gcc-xml(使用gcc作为中间编译器)或一些非 MSVC 选项来实现。但是重要的要求是“编译全部由VC++完成”。

任何可以解决至少一个后续功能或指导我完成目标的解决方案或解决方法都值得赞赏。

4

1 回答 1

1

Semantic Designs(我的公司)提供了 DMS Software Reengineering Toolkit,带有用于各种 C++ 方言的 C++ 解析器,包括 MS Visual Studio。

DMS 并不是专门为生成您想要的数据而设计的,但它会很容易地生成它。DMS by design 是一种可定制的实用工具,需要进行一些配置才能获得定制的答案。在您的情况下,您想要的几乎所有东西都可以在 DMS 的 C++ 符号表中找到,因此自定义将是“遍历符号表,格式化并提取您想要的东西”。有一套完整的 API 可以支持这样做(以及许多其他有用的程序分析/操作任务)。

于 2013-02-20T09:19:15.060 回答