C++ 如何在包含树中找到包含另一个头的头?
在来自Microsoft DirectX的示例中,有对C++ 如何在包含树中找到包含另一个头的头?,c++,visual-studio,compilation,C++,Visual Studio,Compilation,在来自Microsoft DirectX的示例中,有对IID\u PPV\u ARGS的引用。当我在VS2017 enterprise中使用F12导航时,我到达了combaseapi.h,但是编译器的输出带有/showincludes完全没有引用它 最后,项目编译并正确运行,但我无法知道直接或间接包含哪个头combaseapi.h 我怎样才能找到哪个标头正在使用combaseapi.h 目标/问题是理解某个实现(某个DirectX 12方面),这样我就可以用它丰富我自己的(在这种情况下是Dire
IID\u PPV\u ARGS
的引用。当我在VS2017 enterprise中使用F12导航时,我到达了combaseapi.h
,但是编译器的输出带有/showincludes
完全没有引用它
最后,项目编译并正确运行,但我无法知道直接或间接包含哪个头combaseapi.h
我怎样才能找到哪个标头正在使用combaseapi.h
目标/问题是理解某个实现(某个DirectX 12方面),这样我就可以用它丰富我自己的(在这种情况下是DirectX 12 WPF资产)。我自己创建了一个非常小的示例。它不工作,但编译成功:
#include "stdafx.h"
#include "Objbase.h"
#include "Unknwn.h"
#include "Propsys.h"
int main()
{
IPropertyStore *pPropertyStore;
CoCreateInstance(IID_IUnknown, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pPropertyStore));
return 0;
}
在Visual Studio 2017中,我看到了通过Objbase.h
标题包含的combaseapi.h
:
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\Objbase.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\winapifamily.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\winpackagefamily.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\rpc.h
...
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\ole2.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\pshpack8.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\objbase.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\pshpack8.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\combaseapi.h
...
以上编译器输出应按以下方式读取。如果下一行有更多缩进,则表示上一行的标题包括下一行的标题。我正在包括#包括“Objbase.h”
,在我的.cpp文件中,通过增加缩进,我看到combaseapi.h
(输出附件的最后一行)。从这一点我知道,通过5个标题,通过他的方式,我知道Objbase.h
包括combaseapi.h
我正在使用Windows10
我没有看到任何评论
可能再次尝试检查调试器输出?是的,当项目编译并运行时,问题出在哪里?@user463035818问题不在于运行示例,而在于了解其实现。阅读和理解代码是工程的一个重要部分。好的,我想知道我是通过哪个.h到达combaseapi.h的。不是通过/showincludes输出的吗?你说“不是通过/showincludes输出的吗?”是什么意思?/showincludes选项只列出标题、标题的顺序以及包含标题的内容(缩进)。我在/showincludes输出中没有看到combaseapi.h。你是如何发现Objbase.h包含了combaseapi.h的?@Soleil我已经更新了我的答案。现在更清楚了吗?