我们有不同的团队安装了不同版本的VS2015。有些已安装2015 SP2,其他VS2015 SP3已安装。
我想知道这些服务包提供的C ++运行时是否兼容。即:
我无法找到有关兼容性的任何信息......
答案 0 :(得分:0)
没有Visual Studio 2015 Service Pack 2或3.您可能正在谈论:Visual Studio 2015 Update 2和Visual Studio 2015 Update 3。
所以我相信你的问题应该被翻译出来:
您可以在此处找到对C ++编译器所做更改的列表:https://www.visualstudio.com/en-us/news/releasenotes/vs2015-update3-vs#visualcpp
您的问题特别关注标准库的更改,这些库列在此处:
- 我们在破坏Update 2中回归的普通对象范围时恢复了调试模式的性能,就像在vector中一样。
- 我们已经从提案P0185添加[nothrow-]可交换特征的C ++ 17工作文件中实现了可交换特征。作为推测性的C ++ 17特性,特征(
is_swappable
,is_swappable_with
,is_nothrow_swappable
和is_nothrow_swappable_with
)仅可见,并且std::swap
上的约束只有在使用/ std:c ++ latest编译时才有效。- 我们已从vcruntime140.dll和先前在进程启动期间触发的静态库中移除了ETW事件调用,并且dllmain。
- 新我们删除了STL容器使用的常用机器中的符号名称长度,例如
std::vector
,减少了C4503警告的可能性。例如,以下类型不再生成警告:concurrency::concurrent_unordered_map<>>>>
。
最后一个项目符号表示C ++对象内部的符号命名已更改。这意味着在一个Update创建的对象中,符号名称不一定与另一个更新所期望的符号名称一致。所以你的问题的答案是:不,版本之间的对象符号命名发生了变化。它们不再保证兼容。
此外,I've definitely wasted a tremendous amount of time试图弄清楚为什么在一段代码中有效的东西在另一段代码中没有,对我而言,这只是对次要更新。根据我的经验,我会恳请您:让您的整个团队保持完全相同的Visual C ++版本。如果你没有2件事中的一件会发生:
总结正确的答案是:让您的整个团队使用固定版本的Visual Studio,并且不会一直担心您的头脑或脑袋。 < / p>