windows - 为什么Visual Studio 运行时库源代码存放在两个目录中?

标签 windows visual-studio visual-c++ visual-studio-2013

似乎有两个路径包含 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/

相关文章:

c# - 如何使用 Application_UnhandledException 捕获一般异常?

c - 使用c/c++指针操作内存中的数据

visual-studio - 在 VS 中自动更新项目中的所有 Web 引用

c++ - 枚举作为非类型函数模板参数应该彼此不同吗?

c++ - LNK2019 用于静态库中的内联函数

windows - ddev/docker 失败,出现 "Failed programming external connectivity",Windows 10

c# - 以编程方式解锁 Windows

windows - 您可以在兼容模式下运行 Windows 批处理文件吗

visual-studio - 在 Visual Studio 中使用 Saxon .NET XSLT 处理器不适用于智能感知

visual-studio - 如何禁用 Visual Studio 中的错误本地化?