似乎有两个路径包含 Microsoft Visual Studio 运行时源文件:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\crt\src
和
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
有些文件出现在两个目录中,但大小不同。我特别查看了一个文件,它在两个文件中定义了相同的方法。
所以我的问题是,这两条路径在用法上有什么区别?我想知道当我在 Visual Studio 中调试(我不是指 Debug模式)时,屏幕上的代码是哪个文件?
最佳答案
include
目录包含所有公共(public) header 。这些是您可以包含在代码中的 header ,例如 <stdio.h>
和 <type_traits>
,加上这些 header 所需的实现 header 。
crt\src
目录包含 CRT 源,包括大部分 .asm
, .c
, 和 .cpp
用于构建 CRT 的文件。该目录还有许多 CRT header 的副本,在某些情况下,这些 header 与 include
中的不同。目录。这纯粹是 CRT 构建方式的产物。
调试 CRT header 中定义的内联代码时,调试器应始终选择正确的 header 。如果两个目录包含相同的 header 副本,则调试器将只选择一个,并且由于 header 相同,因此选择哪个都无关紧要。如果 header 不同,则调试器选择哪个 header 取决于将内联函数编译到的对象。如果该对象是 CRT 的一部分,您将从 crt\src
进入 header 。 ;如果该对象来自您的源文件之一,您将从 include
进入 header .基本上,调试器应该始终能够找到 header 的正确副本。
我们在 Visual Studio“14”CTP 中大大简化了这一点。 crt\src
中不再有任何公共(public)标题目录,以及 include
中附带的 header 目录与用于构建 CRT 的目录相同。
关于windows - 为什么Visual Studio 运行时库源代码存放在两个目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24201794/