我正在开发一个相当大的代码库,它有一点#ifdef魔法。我正在查看一个文件并尝试确定类型的定义位置。不幸的是,它包含许多文件,其中包含许多文件,其中包含许多文件等,其中一些文件定义了影响您可能使用的定义的宏。这个结构非常复杂,经过10分钟的grepping和跟随包含链后,我仍然不知道使用了哪个定义。我记得visual studio有一个很好的功能,我可以右键单击该类型,它将显示类型的定义位置。有没有一个相当不错的linux工具读取make文件等?我确定有,但我仍然只是使用vim + grep来开发我的开发环境。
答案 0 :(得分:4)
对于复杂的定义和依赖项,此功能在Visual Studio中并不总是有效。
解决方案:请求编译器在预处理后转储代码,并要求它打印#line和#file指令。在结果文件中搜索您的类型,然后查看最接近的#file指令以查看它来自何处。
(在GCC中你可以使用-E开关)