Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在包含树中找到包含另一个头的头?_C++_Visual Studio_Compilation - Fatal编程技术网

C++ 如何在包含树中找到包含另一个头的头?

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

在来自Microsoft DirectX的示例中,有对
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我已经更新了我的答案。现在更清楚了吗?