确定哪个文件包含某些特定的头文件

Sum*_*uma 10 c c++ visual-studio-2005 header include

有时使用复杂的头结构会出现一些标题,但很难分辨出来.

是否有一些工具(依赖性查看器?)或方法如何找到"包含堆栈"(哪个源/哪个标题/哪个标题/ ...)包含一个特定的头文件?

如果多次包含头文件,找到第一个包含就足够了,找到所有包含是一个值得欢迎的奖励.

Ser*_*kov 12

有人发布了它,但我找不到这个答案.因此,在VS中,转到项目属性.选择Configuration Properties/C/C++/Advanced/Show Includes并设置"yes".

然后编译你的cpp文件.它看起来像这样:cpp文件:

#include <stdio.h>

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在编译后的输出窗口中,您将看到:

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
Run Code Online (Sandbox Code Playgroud)

等等

编辑:引用相同的问题在Visual Studio中显示C++文件的#include层次结构


Bri*_*per 8

您要搜索的标头可能不会直接包含在源文件中.您需要'preprocess_only'代码.这可以通过使用-E选项以g ++完成; 我不太了解视觉C以了解确切的规格是什么,但如果你查看"预处理"的帮助,你可能会想出一些东西.


Gar*_*ell 6

(应在任何平台/工具链的工作,而不需要单独的依赖性分析,但一个)一个有点哈克的方法是简单地添加#error在包含的头顶部-那么你会从第一个得到一个编译错误.cpp文件,其中包括它.