有哪些库可用于解析c++以提取类型信息

2024-01-21

我正在寻找一种解析 C++ 代码以检索有关类的一些基本信息的方法。我实际上不需要代码本身的太多信息,但我确实需要它来处理宏和模板等内容。简而言之,我想提取代码的“结构”,即您将在 UML 图中显示的内容。

对于代码库中的每个类/结构/联合/枚举/typedef,我需要的只是(在处理模板和宏之后):

  • 他们的名字
  • 他们所在的命名空间
  • 其中包含的字段(类型名称、字段名称和访问限制,例如私有/可变/等)
  • 其中包含的函数(返回类型、名称、参数)
  • 声明文件
  • 该数据定义开始的行/列号(或文件中的字节偏移量)

代码中的实际说明与我的目的无关。

我预计很多人会说我应该为此使用正则表达式(甚至 Flex 和 Bison),但这些并不是真正有效,因为我确实需要正确处理预处理器和模板内容。


听起来像是一份工作gcc-xml http://public.kitware.com/GCC_XML/HTML/Index.html与您选择的 c++ xml 库或 xml 友好的脚本语言结合使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有哪些库可用于解析c++以提取类型信息 的相关文章

  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File

随机推荐

  • Python正则表达式在集合内匹配

    测试时http gskinner com RegExr http gskinner com RegExr 在线正则表达式测试器 正则表达式 jpg bmp 当 jpg 或 bmp 存在时返回结果 但是 当我在 python 中运行此正则表达
  • SSRS 2005 缺少 Microsoft.ReportingServices.Interfaces.dll

    我在 c program files SQL Server 90 Tools Binn 中缺少此 DLL 引用 我假设这是因为我没有安装 2005 客户端 我安装了 2005 年的所有服务 数据库实例 报告服务实例 SSAS 和 SSIS
  • 持续更新文件

    最终 我需要将 Spotify API 中的信息提供给应用程序 以显示 当前歌曲 信息 包括提示时间 因此需要不断轮询 API 并更新应用程序轮询的数据源 我仍在尝试从流而不是文件的角度来思考数据 所以我想出了这个小实验来了解如何不断更新文
  • PM2 - 语法错误:严格模式之外尚不支持块范围声明

    我目前正在 Ubuntu 服务器上安装 NodeJS 服务 该应用程序是用 CoffeeScript 编写的 并且可以自行运行良好 这就是我设置项目的方式 cd test project nvm use v4 9 1 npm install
  • Zeroinfl“系统在计算上是奇异的”,而预测变量没有相关性

    我正在尝试对一年中工人缺勤天数的计数数据 因变量 进行建模 我有一组预测变量 包括有关工人 有关他们的工作等的信息 其中大多数是分类变量 因此 需要估计大量系数 83 但由于我有超过 600 000 行 我认为这应该不会有问题 此外 我的数
  • 当你调用一个包含yield的函数时会发生什么?

    I read here https stackoverflow com questions 19302530 python generator send function purpose 60042174 noredirect 1 comm
  • 如何创建支持 Ruby 的 shell 命令?

    我正在创建一个 gem 我希望能够在其中使用 shell 命令来执行 gem 中的功能 在更简单的上下文中 我需要创建一个 shell 脚本 该脚本在触发 shell 命令时执行带有选项的 Ruby 函数 做到这一点最简单的方法是什么 例如
  • std::tuple 和标准布局

    如果所有成员std tuple are of 标准布局类型 https stackoverflow com a 7189821 734069 就是它std tuple本身标准布局 用户定义的复制构造函数的存在使其变得不平凡 但我想知道它是否
  • 如何显示wordpress页面内容?

    我知道这真的很简单 但由于某种原因我没有想到 而且谷歌今天也没有帮助我 我想输出页面内容 该怎么做 我以为是这样的 Marc B 感谢您的评论 帮助我发现了这一点 p Sorry no posts matched your criteria
  • 是否可以扁平化 MongoDB 结果查询?

    我的 MongoDB 集合中有一个深度嵌套的集合 当我运行以下查询时 db countries findOne data country neighbor name 1 id 0 我最终在这里得到这个嵌套结果 data country ne
  • 使用 ImageMagick 打开随机 jpeg 的 Shell 脚本

    我有一大堆 jpeg 我想编写一个 shell 脚本 随机选择 5 个图像 然后使用 imageMagick 将它们放入蒙太奇中 然后打开这个蒙太奇文件 我希望这个过程每 10 秒发生一次 我试过这个脚本 for f in jpg do s
  • Windows上构建的PyQt:DLL加载失败:找不到指定的过程

    我尝试在 Windows 7x64 上从源代码 下载了二进制 Qt 5 8 0 构建 PyQt 我通过本教程做到了 https stackoverflow com a 40779370 2726900 https stackoverflow
  • 错误:条目中的空值:incrementalFolder=null

    我在 gradle 构建中遇到以下错误 错误 条目中的空值 incrementalFolder null 我怎样才能解决这个问题 我同意马拉维略 辛加的回答 这似乎是 gradle 中的一个错误 我找到了另一个解决方案here https
  • 如何按给定数量复制数组中的对象,ES6 及更高版本

    我正在尝试转换一个对象数组 如果对象属性数量大于 1 我将返回重复的对象 const objects id 1 name Scissor price 2 quantity 3 id 2 name Hat price 6 5 quantity
  • 将共享库编译成程序?

    我编写了一个程序 它使用我的系统上安装的共享库 这个库很少安装在其他系统上 如何编译我的程序以便不需要在其他系统上安装该库 我有可用的库的源代码 最好的办法是什么 其他系统当然具有相同的架构和操作系统 将其编译为静态库并将其链接到可执行文件
  • 在 Ubuntu 12.04 中编译和链接 OpenCV

    我刚刚花了令人沮丧的很长一段时间让 openCV 在 Ubuntu 12 04 中正确链接 并认为我会分享我学到的东西以造福他人 OpenCV 现已在 Ubuntu 存储库中提供 如下所示 sudo apt get install libo
  • 限制 AMD OpenCL 的 GPU 数量

    是否有解决方案限制 AMD OpenCL 平台使用的 GPU 数量 对于 NVIDIA 平台 只需设置环境变量即可CUDA VISIBLE DEVICES限制 OpenCL 可用的 GPU 集 编辑 我知道 我可以使用更少的设备创建一个上下
  • 使用 CodeIgniter 创建 XML

    我在 Codeigniter 中使用此代码来生成 XML public function get cuisine this gt load gt dbutil sql select from cuisine query this gt db
  • 如何退出运行循环?

    所以 我有一个 Swift 命令行程序 import Foundation print start startAsyncNetworkingStuff RunLoop current run print end 代码编译没有错误 异步网络代
  • 有哪些库可用于解析c++以提取类型信息

    我正在寻找一种解析 C 代码以检索有关类的一些基本信息的方法 我实际上不需要代码本身的太多信息 但我确实需要它来处理宏和模板等内容 简而言之 我想提取代码的 结构 即您将在 UML 图中显示的内容 对于代码库中的每个类 结构 联合 枚举 t