【问题标题】:Determining where a type is defined确定类型的定义位置
【发布时间】:2010-12-28 04:18:35
【问题描述】:

我正在编写一个相当大的代码库,其中包含一些#ifdef 魔法。我正在查看一个文件并尝试确定类型的定义位置。不幸的是,它包含许多文件,其中包含许多文件,其中包含许多文件等。其中一些定义了影响您可能使用的定义的宏。结构非常复杂,经过 10 分钟的 grepping 并遵循包含链,我仍然不知道使用的是哪个定义。我记得 Visual Studio 有一个很好的功能,我可以右键单击类型,它会显示类型的定义位置。是否有用于 linux 的等效好工具来读取 make 文件等?我确定有,但我仍然只是在我的开发环境中使用 vim + grep。

【问题讨论】:

  • 为什么不使用 gdb,如果这是一个选项,因为我认为 vim 没有像 VS 这样的选项,除非某处存在插件?使用像 NetBeans 这样的 IDE。相关问题,不是重复的stackoverflow.com/questions/559274/…
  • 与其浪费时间和精力来追踪该变量的定义,不如将资源用于计划谋杀犯人。

标签: c++ linux ide definition


【解决方案1】:

由于复杂的定义和依赖关系,此功能在 Visual Studio 中也并不总是有效。

解决方案:要求编译器在预处理后转储代码,并要求它也打印#line 和#file 指令。在结果文件中搜索您的类型,然后查看最近的 #file 指令以了解它的来源。

(在 GCC 中您可以使用 -E 开关)

【讨论】:

  • 这很好用。你是对的,有什么比使用预处理器更好的方法来解析所有预处理器宏?
  • 有时使用与您的项目相同的选项和库编写一个简短的程序很有用/快速,并利用任何显示例程(如果可用)来帮助确定使用哪种结构定义。跨度>
猜你喜欢
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多