Visual Studio中是否有一个选项可以提供一个简单的视图,说明如何在不构建的情况下将文件包含在我的C++代码中



所以我的文件mine.cpp,中有以下代码

#include <iostream>
#define max INT_MAX

标识符";INT_ MAX";如果我删除"#包括<iostream>";。所以,我知道它是在iostream的某个地方定义的。

当我转到INT_MAX的定义时,它在limites.h文件中。所以,我猜limites.h嵌套在iostream中。

有没有一种方法可以让我在不构建的情况下查看(比如我的.cpp->iostream->…->limites.h(limites.htm是如何包含在我的mine.cpp中的。

我搜索并发现还有其他类似的问题,但所有与它们相关的答案都包括";用一些选项构建";。我必须在没有建筑的情况下完成这项工作,因为我的建筑需要相当长的时间才能完成。

这是一个奇怪的要求:

没有建筑。

您到底想避免什么?构建整个项目/解决方案?为了节省时间?

正如@dxiv和@Boris所指出的,您至少需要编译该文件。更严格地说,在上面运行预处理器来扩展宏、条件编译等。

从技术上讲,用/showIncludes/P编译文件(对文件进行预处理(并不"有效";构建";,因为没有产生对象文件。

生成的输出是分层的,因此您可以获得完整的包含路径。

你没有提到你工作室的版本;这篇文章在Visual Studio Community 2019中生成包含文件的图,声明2019年企业版(可能还有2017年(具有"Generate Graph Of Include Files"功能。然而,它使用的过程可能涉及编译或预处理:(

不知道在不进行编译的情况下(可靠地(可以做到这一点,因为最终是编译器检查include路径和依赖项。

但是,使用#include <iostream>编译一个文件就足够了,而不是构建整个项目。例如,编译默认的";"C++控制台";向导生成的.cpp生成一个debugsample.tlogCL.read.1.tlog文件,该文件顶部包含以下内容。

<vs-path>VCTOOLSMSVC14.26.28801INCLUDEIOSTREAM      ***
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEYVALS_CORE.H
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEVCRUNTIME.H
<vs-path>VCTOOLSMSVC14.26.28801INCLUDESAL.H
<vs-path>VCTOOLSMSVC14.26.28801INCLUDECONCURRENCYSAL.H
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEVADEFS.H
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEXKEYCHECK.H
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEISTREAM        ***
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEOSTREAM        ***
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEIOS
<vs-path>VCTOOLSMSVC14.26.28801INCLUDEXLOCNUM        ***
<vs-path>VCTOOLSMSVC14.26.28801INCLUDECLIMITS        ***
<vs-path>VCTOOLSMSVC14.26.28801INCLUDELIMITS.H       <--
<vs-path>VCTOOLSMSVC14.26.28801INCLUDECMATH

以上是导致limits.h#include文件的超集。对各个报头的检查表明,实际路径是iostream- istream- ostream- xlocnum- climits- limits.h

最新更新