为什么微软还支持nothrownew.obj ?
Why would Microsoft still support nothrownew.obj?
根据MSDN,微软仍然没有发布thrownew。obj与Visual c++ 10 (Visual Studio 2010)运行时库,以便用户可以链接到它,并具有"普通"(不是nothrow
风味)new
在分配失败时返回null的次标准行为。这种不合标准的行为可以追溯到Visual c++ 6,它现在被认为是非常老的。
为什么会这样呢?我的意思是他们使每个新版本的编译器越来越符合标准。例如,Visual c++ 7支持"default int",但Visual c++ 9不支持。通过稍微修改代码,使用new
的nothrow
风味,可以很容易地实现旧的new
不合格行为,这是直接的,非常容易的。
为什么这个选项如此重要以至于微软仍然支持它?
嗯,这是一个悬而未决的问题,因为除了微软的负责人之外,没有人能肯定地说——如果有的话。所以,我要咬一口:
我想这是为了方便:
- 微软本身可能在他们的一些产品中需要它,它只是更容易与编译器工具在一起。
- 微软可能知道有人(比如一个大的供应商/应用程序)仍然需要它,它只是更容易(甚至是必要的,如果编译器特定)仍然提供它。 微软可能知道/预计它通常仍然"广泛"使用在遗留应用程序中。大或小
- "它不疼",很有争议。例如,微软在维护Windows的向后兼容性方面有很长的记录(参见Raymond chen的博客),同样,可以说并不总是朝着更好的方向发展。
- 文档、测试等需要修改(或删除,但仍然)。
也就是说,删除它可能比保留它更麻烦。
至少他们需要/应该在删除一个版本之前提供一个已弃用的通知。我不知道他们是否在VS2010或之前的版本中这样做了
因为我现在(2012)将一个产品从Visual c++ 6.0移植到Visual Studio 2010,这极大地帮助了开发速度。在未来几年内,我们也不会进行Unicode转换。如果微软不提供兼容功能,我将自己构建它。
作为旁注,我们是专业领域的 ISV。如果我们决定改变操作系统,整个行业可能会改变。(在Windows出现之前,我们也曾构建一个专门的操作系统)
相关文章:
- 如何在.obj文件上运行IlDasm?
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 在 opengl 中渲染 obj 文件时出现黑窗口
- 使用 Boost.Spirit 解析具有混合数据类型的 OBJ 文件?
- 正在读取 obj 文件!(指数)
- 我在主函数的左括号上不断收到错误,消息为obj\Debug\main.o||在函数"ZN11linked_listC1Ev"中:|
- float* 已在 Gameobject.obj 中定义
- 可执行文件C++包括.obj,.lib和.dll吗?
- C++成功复制动态分配的 obj 而不复制 ctor?
- OBJ 文件C++与 ubuntu 问题
- 为什么定义复制构造函数会给我错误:无法将类型 'obj&' 的非常量左值引用绑定到类型为"obj"的右值?
- OBJ 向量到成员函数
- 在istream_iterator中使用后的 C++ FSTREAM obj 回滚
- 使用sscaf_s从obj读取顶点线不起作用
- 移植DXUT SDKMesh以导入OBJ文件,在哪里添加纹理坐标和索引
- /usr/bin/ld: build-debug/obj/gpsitem.o: 文件无法识别: 文件被截断
- 将多个网格放入单个波前 OBJ 文件中
- :-1: 错误: LNK1104: 无法打开文件"我的项目.obj"
- Python 脚本到 c .obj 文件
- 为什么微软还支持nothrownew.obj ?