【发布时间】:2020-11-02 15:41:42
【问题描述】:
我对包含文件有疑问。
假设您正在使用来自 Windows 标头的定义。当然,您可以知道定义宏的确切标头是什么。但问题是我们能否得到include 链并知道哪个路径导致宏被包含?
例如我有以下结构
windows.h // a windows header defines a macro
header1.h <- windows.h // a <- b means a includes b
header2.h <- windows.h
header3.h <- windoes.h
header4.h <- header1.h, header2.h
header5.h <- header1.h, header4.h, header3.h
如您所料,实际示例可能非常复杂,带有宏定义和ifdefs。
现在在我们的example.cpp 或#include "header4.h" 或#include "header5.h" 或两者中,我们在代码中使用windows.h 中的宏。如何知道什么是包含链?
例如对于这个例子,它可能是header4.h - header1.h - windows.h
【问题讨论】:
-
@ChrisMM 是的,它以某种方式相关。但我只关注层次结构的简单功能。如果我通过您的建议,我必须编译源代码,查看头文件的位置,然后获取层次结构。虽然我没有设法以这种方式找到它。
-
这就是为什么我说它是相关的,而不是重复的。
标签: c++ c visual-studio include c-preprocessor