C++ 确定定义类型的位置

C++ 确定定义类型的位置,c++,linux,ide,definition,C++,Linux,Ide,Definition,我正在开发一个相当大的代码库,其中有一点“ifdef魔力”。我正在查看一个文件并试图确定类型的定义位置。不幸的是,它包含许多文件,其中包括许多文件,其中包括许多文件,等等。其中一些定义了宏,这些宏会影响您可能使用的定义。这个结构非常复杂,经过10分钟的greping和include链之后,我仍然不知道使用了哪个定义。我记得VisualStudio有一个很好的特性,我可以右键单击类型,它将显示定义类型的位置。是否有一个相当不错的linux工具可以读取make文件等?我肯定有,但我仍然只是在我的开发

我正在开发一个相当大的代码库,其中有一点“ifdef魔力”。我正在查看一个文件并试图确定类型的定义位置。不幸的是,它包含许多文件,其中包括许多文件,其中包括许多文件,等等。其中一些定义了宏,这些宏会影响您可能使用的定义。这个结构非常复杂,经过10分钟的greping和include链之后,我仍然不知道使用了哪个定义。我记得VisualStudio有一个很好的特性,我可以右键单击类型,它将显示定义类型的位置。是否有一个相当不错的linux工具可以读取make文件等?我肯定有,但我仍然只是在我的开发环境中使用vim+grep。

对于复杂的定义和依赖关系,此功能也不总是在VisualStudio中工作

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


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

如果gdb是一个选项,为什么不使用它呢,因为我认为vim没有像VS这样的选项,除非某个地方存在外接程序?使用像NetBeans这样的IDE。与此相关的问题,不是重复的,与其浪费时间和精力去追踪变量的定义,你还不如把你的资源花在谋杀凶手上。这很有效。您是对的,还有什么比使用预处理器更好的方法来解析所有预处理器宏呢?有时,使用与项目相同的选项和库编写一个简短的程序,并利用任何显示例程(如果可用)来帮助确定使用的结构定义是有用的/快速的。