从Visual Studio 6升级有哪些令人信服的论据?

时间:2008-10-10 13:23:48

标签: c++ visual-studio visual-c++ stl vc6

我有一个客户仍在使用Visual Studio 6来构建生产系统。他们编写了使用STL并在多处理器机器上运行的多线程系统。

有时,当他们更改其服务器计算机的规格或增加其负载时,他们会“奇怪”地难以重现错误......

我知道Visual Studio 6开发存在一些问题,我想说服他们转向Visual Stuio 2005或2008(他们使用Visual Studio 2005并将其用于某些项目)。

此问题的目的是汇总已知问题或升级原因的列表,以及讨论或报告这些问题的链接。如果这些问题如何困扰你,那么拥有现实生活中的“恐怖故事”也是有用的。

14 个答案:

答案 0 :(得分:18)

64位系统不支持,与Vista的兼容性问题,以及微软于2008年4月8日退出扩展支持

http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx

答案 1 :(得分:11)

未修补的VC6 STL不是线程安全的。请参阅此处 http://www.amanjit-gill.de/articles/vc6_stl.html,这些修补程序未包含在服务包中,您必须直接从Dinkumware(从此处 http://www.dinkumware.com/vc_fixes.html)获取这些修补程序,然后应用它们到每个安装......

答案 2 :(得分:10)

我们在工作场所看到的最大问题是它无法处理即使是极其复杂的模板类或函数。仅这一事实就迫使公司中一些最忠实的VS6粉丝升级并开始使用VS2005。除了模板问题,intellisense更好,调试更容易,更准确,许多人发现IDE更容易导航。到目前为止,我们看到的唯一缺点是2005年的构建时间比6年时要长一些(但这可能是编译器更强大的副作用)

您还可以查看这些网站,了解VS6中已知问题的示例:

我相信如果你捅了一下就可以找到更多。

答案 3 :(得分:7)

VS6不根据当前的C / C ++标准编译代码。例如,

  • 它有不正确的(过时的)循环范围规则。现在至少有一个MSFT SDK已经使用需要正确语义的代码进行了更新,因此SDK甚至不再使用VS6进行编译。
  • 除了最琐碎的模板构造之外,它还无法编译。
  • 它将编译一些在最近的标准更新中被声明为非法的模板构造(因为构造实际上并不像普通用户所期望的那样)。

答案 4 :(得分:3)

operator new不符合C ++规范,并且不会在分配失败时抛出异常,修复此操作并非易事。

请参阅: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx

答案 5 :(得分:1)

我升级的最大原因之一是符合标准的C ++编译器(虽然仍然不是100%),所以我可以在我的项目中利用更多C ++功能,而不用担心会导致难以实现的奇怪的黑客攻击和变通方法。发现错误。

答案 6 :(得分:1)

与Vista不兼容。哎呀,VS 2005与Vista有很多问题。

话虽如此,VS中的大多数改进似乎都适用于除C ++本机代码之外的所有内容。我所看到的是更符合标准,这很重要但很难引人注目。

答案 7 :(得分:1)

Visual Studio 6与最新的Windows SDK不兼容,因此无法(至少很容易)使用最新的操作系统功能。

答案 8 :(得分:1)

虽然我不再具有具体的细节,但我只是在工作时升级时,新的编译器发现了很多VC 6让它悄悄溜走的错误。从升级开始就提高了产品的稳健性。

答案 9 :(得分:0)

如果他们使用STL,他们可能会对最近发布的feature pack感兴趣,其中包含TR1的实现。

答案 10 :(得分:0)

我升级了我的东西,但它相对简单。要升级的内容是VS 2005 DLL Hell

答案 11 :(得分:0)

STL的VS 2008版本使用/clr编译,因此如果他们有兴趣转换到托管世界,他们就不必丢失所有旧代码。

答案 12 :(得分:0)

通过defoult更新的版本有更好的编译器和更好的库。但是将现有项目移植到新工作室并不总是那么容易,您可以手动升级编译器和库。

我在一年前使用VS 6.0和英特尔编译器。我们当时只有一堆旧代码,它将迭代器作为指针进行威胁,反之亦然,而且它们都非常混乱和可怕,所以这使我们无法升级。

但我毕竟不得不升级,因为我目前使用的框架根本不能在VS 6.0上运行。认为这是最终的原因: - )

答案 13 :(得分:0)

第三方库也仅支持有限数量的编译器。您的客户可能无法接受错误修正或功能升级。

例如,即使是作为Boost广泛使用的库,也只支持VS 7.1及更高版本(source

你也可能在数据执行保护(DEP)方面遇到一些问题,因为VC6附带了旧的ATL版本。像往常一样,请参阅Raymond Chen了解详细信息。