According to MSDN,Microsoft仍然使用Visual C ++ 10(Visual Studio 2010)运行时库运送nothrownew.obj,以便用户可以链接它并具有“普通”的不标准行为(不是{{1 } {flavor} nothrow
在分配失败时返回null。这种不合标准的行为可追溯到Visual C ++ 6,现在它被认为是非常古老的。
为什么会这样做?我的意思是他们使编译器的每个新版本越来越符合标准。例如,Visual C ++ 7将支持“default int”,但Visual C ++ 9则不支持。通过稍微更改代码以使用new
的{{1}}风格,可以轻松实现new
的旧的不合标准行为 - 这很简单,非常简单。
为什么这个选项如此重要以至于Microsoft仍然支持它?
答案 0 :(得分:4)
嗯,这是一个悬而未决的问题,因为除了微软负责人之外没有人可以肯定地说 - 如果有的话。所以,我会咬一口:
我猜这是为了方便:
也就是说,删除它可能会更麻烦,然后保留它。
至少他们需要/应该在删除之前提供已弃用的通知。我不知道他们是否为VS2010或任何先前版本做过。
答案 1 :(得分:2)
因为我现在(2012)将产品从Visual C ++ 6.0移植到Visual Studio 2010,这有助于大大提高开发速度。我们也不会在未来几年内进行Unicode转换。如果微软不提供兼容性功能,我会自己构建它。
作为旁注,我们是专业领域的主要 ISV。如果我们决定改变操作系统,整个行业可能会改为。 (在Windows之前,我们还建立了一个专门的操作系统。)