我正在处理一个相当大的代码库,其中有一些#ifdef 魔法在进行。我正在查看一个文件并试图确定类型的定义位置。不幸的是,它包含许多文件,其中包含许多文件,其中包含许多文件等。其中一些定义了影响您可能使用的定义的宏。该结构非常复杂,经过 10 分钟的 grepping 和跟踪包含链后,我仍然不知道正在使用哪个定义。我记得 visual studio 有一个很好的功能,我可以右键单击类型,它会显示定义类型的位置。是否有一个等效的 linux 读取 make 文件等的好工具?我确定有,但我仍然只是在我的开发环境中使用 vim + grep。
最佳答案
对于复杂的定义和依赖项,此功能在 Visual Studio 中也不总是有效。
解决方案:要求您的编译器在预处理后转储代码,要求它也打印#line 和#file 指令。在生成的文件中搜索您的类型,然后查看最接近的 #file 指令以了解它的来源。
(在 GCC 中你可以使用 -E 开关)
关于c++ - 确定定义类型的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541457/