Visual Studio CE 2019 和 Visual Studio CE 2015 在构建 C++ 项目时有什么区别?
What differences are there between Visual Studio CE 2019 and Visual Studio CE 2015 when building C++ projects?
我在 VS CE 2019 中打开了一个解决方案文件并尝试构建该解决方案,但最终出现了很多 C2039 错误,指出某些东西不是 std 命名空间的成员。这些可以通过添加适当的 include 语句来解决。当我在没有更改代码的情况下在 VS CE 2015(由该项目的自述文件指定)中打开相同的解决方案时,我能够构建和 运行 程序,只有警告。我不确定要搜索什么才能找到有关导致此问题的版本之间差异的更多信息。
可能是因为该项目依赖于一些标准库头文件,包括其他标准库头文件,这是可能的,但不能保证。
当代码依赖于库头文件之间的间接包含时会发生这种情况,标准不强制或保证这些文件,并且可以在版本之间更改。
从 What's new for C++ in Visual Studio 2019 年开始:
Optimized the standard library physical design to avoid compiling parts of the standard library not directly included. This change cut the build time of an empty file that includes only <vector>
in half. As a consequence, you may need to add #include
directives for headers that were previously indirectly included. For example, code that uses std::out_of_range
may now need to add #include <stdexcept>
. Code that uses a stream insertion operator may now need to add #include <ostream>
.
我在 VS CE 2019 中打开了一个解决方案文件并尝试构建该解决方案,但最终出现了很多 C2039 错误,指出某些东西不是 std 命名空间的成员。这些可以通过添加适当的 include 语句来解决。当我在没有更改代码的情况下在 VS CE 2015(由该项目的自述文件指定)中打开相同的解决方案时,我能够构建和 运行 程序,只有警告。我不确定要搜索什么才能找到有关导致此问题的版本之间差异的更多信息。
可能是因为该项目依赖于一些标准库头文件,包括其他标准库头文件,这是可能的,但不能保证。
当代码依赖于库头文件之间的间接包含时会发生这种情况,标准不强制或保证这些文件,并且可以在版本之间更改。
从 What's new for C++ in Visual Studio 2019 年开始:
Optimized the standard library physical design to avoid compiling parts of the standard library not directly included. This change cut the build time of an empty file that includes only
<vector>
in half. As a consequence, you may need to add#include
directives for headers that were previously indirectly included. For example, code that usesstd::out_of_range
may now need to add#include <stdexcept>
. Code that uses a stream insertion operator may now need to add#include <ostream>
.