有时候使用复杂的标题结构时会出现一些标题,但很难分辨出来。
是否有一些工具(依赖性查看器?)或方法如何找到“包含堆栈”(哪个源/哪个标题/哪个标题/ ...)包含一个特定的头文件?
如果多次包含头文件,找到第一个包含就足够了,找到所有内容是一个值得欢迎的奖励。
答案 0 :(得分:12)
有人发布了相关信息,但我找不到这个答案。 因此,在VS中,转到项目属性。选择Configuration Properties / C / C ++ / Advanced / Show Includes并设置“yes”。
然后编译你的cpp文件。它看起来像这样: cpp文件:
#include <stdio.h>
int main()
{
return 0;
}
在编译后的输出窗口中,您将看到:
1>------ Build started: Project: stlport_project, Configuration: Release Win32 ------
1>Compiling...
1>stlport_project.cpp
1>Note: including file: D:\src\hrs_rt_059.00\HRS\modules\src\libs\src\external\stlport\5.1.7\stdio.h
1>Note: including file: D:\src\hrs_rt_059.00\HRS\modules\src\libs\src\external\stlport\5.1.7\stl/_prolog.h
1>Note: including file: D:\src\hrs_rt_059.00\HRS\modules\src\libs\src\external\stlport\5.1.7\stl/config/features.h
等等
编辑:引用相同的问题Displaying the #include hierarchy for a C++ file in Visual Studio
答案 1 :(得分:8)
您要搜索的标头可能未直接包含在源文件中。您需要'preprocess_only'代码。这可以通过使用-E选项以g ++完成;我不太了解视觉C以了解确切的规格是什么,但如果你查看“预处理”的帮助,你可能会想出一些东西。
答案 2 :(得分:6)
一种有点hacky的方法(但是它应该适用于任何平台/工具链,而不需要单独的依赖分析器)只需在包含的头部顶部添加#error
- 然后您将获得编译来自包含它的第一个.cpp
文件的错误。
答案 3 :(得分:1)
直接在Visual Studio中我找到了一个名为/showIncludes的选项 - 输出只是文本的,但缩进的方式使得阅读非常简单:
Note: including file: /*..path.anonymized..*/\TCMalloc\windows\config.h
Note: including file: /*..path.anonymized..*/\memalloc\tcmalloc\windows/port.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windows.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\include\excpt.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\include\crtdefs.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\include\sal.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\include\vadefs.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\include\stdarg.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\include\ctype.h
Note: including file: C:\Program Files\Microsoft Visual Studio 8\VC\include\crtdefs.h
还有一个名为Include Manager的VS加载项,它似乎以非常好的视觉方式提供所需的功能。