Visual C ++ 6.0和Visual C ++ 2008有什么区别?

时间:2008-09-15 12:36:06

标签: c++ visual-studio vc6

MS VS C ++ 6.0和MSVS C ++ 2008有哪些优缺点?

提出这样一个问题的主要原因是仍有许多不错的程序员喜欢使用旧版本而不是最新版本。

是否有任何理由可能更喜欢旧版本而不是新版本?

14 个答案:

答案 0 :(得分:27)

Visual Studio 2008优于Visual C ++ 6.0的优点:

  • 更多符合标准的C ++编译器,具有更好的模板处理能力
  • 支持x64 / mobile / XBOX目标
  • 改进STL实施
  • 支持C ++ 0x TR1(智能指针,正则表达式等)
  • 安全C运行时库
  • 改进的代码导航
  • 改进的调试器;运行远程调试会话的可能性
  • 更好的编译器优化
  • 许多错误修复
  • 更快地构建在多核/多CPU系统上
  • 改进的IDE用户界面,具有许多不错的功能
  • 改进了IDE中的宏支持; DTE允许访问更多IDE方法和变量
  • 更新了MFC库(在VS2008 Service Pack 1中)
  • 支持OPENMP(简易多线程)(仅限VS2008专业版)

迁移到Visual Studio 2008的缺点:

  • IDE比VS6慢很多
  • Intellisense仍有性能问题(用VisualAssistX代替它可以帮助)
  • 并排程序集使应用程序部署更加成问题
  • 本地(离线)MSD​​N库非常慢
  • 如上所述here,专业版
  • 中没有分析器

根据Joel最近blog post的精神,我将其他一些答案合并到一个答案中(并将其作为社区拥有的帖子,因此我不会从中获得代表)。我希望你不介意。非常感谢Laur,NeARAZ,26 of 17,me.yahoo.com以及其他所有回答的人。 - ChrisN

答案 1 :(得分:4)

嗯,首先可能是因为使用MSVS 6构建的可执行文件只需要msvcrt.dll(C运行时),现在它随Windows一起提供。

MSVS 2008可执行文件需要msvcrt9随附(或已安装)。

另外,您已经为6.0 C运行时的Windows 32位编译了许多OSS库,而对于2008 C运行时,您必须自己获取源代码并自行编译。

(大多数这些库实际上是用MinGW编译的,它也使用了6.0 C运行时 - 这可能是另一个原因。)

答案 2 :(得分:4)

我想补充一点,使用Visual C ++ 2008开发的应用程序不一定需要比使用Visual C ++ 6.0开发的应用程序更多的DLL。这只是默认的项目配置。

如果您进入项目属性,C / C ++,代码生成,然后将运行时库从多线程DLL和多线程调试DLL(发布和调试配置)更改为多线程多线程调试,您的应用程序应该具有更少的依赖关系。

答案 3 :(得分:3)

在我的脑海中,新Visual Studio的优点是:

  • 更严格地遵守标准
  • 支持x64 / mobile / XBOX 目标
  • 更好的编译器优化
  • (方式)更好的模板处理
  • 改进了调试器;可能性 运行远程调试会话
  • 改进了IDE
  • 改善宏观支持; DTE允许访问更多IDE方法和变量

缺点:

  • IDE似乎更慢
  • 智能感知仍有表现 问题(替换为 VisualAssistX可以提供帮助)
  • 运行时不是普遍可用的
  • 源控制集成不达标 相同(尽管VC6 完全没有这个功能)

答案 4 :(得分:1)

除了上面提到的部署,MSVC 6.0的主要优点是速度。因为它是一个已有10年历史的IDE,在现代计算机上感觉非常快。较新版本的Visual Studio提供了更多高级功能,但它们需要付出代价(复杂性和速度较慢)。

但MSVC 6.0的最大缺点是其不兼容的C ++ - 编译器和库。如果你打算做严肃的C ++ - 编程这是一个显示阻止。如果你只构建MFC-Applications,那可能不是什么大问题。

答案 5 :(得分:1)

Visual C ++ 6.0与内存跟踪工具(如Purify,HeapAgent,BoundsChecker和MemCheck)完全集成,因为在Visual C ++ 6.0发布后,这些内存跟踪工具得到了积极维护和积极销售。

然而,由于C ++已经暂时不流行,销售内存跟踪工具的公司仍在销售它们但从未更新或集成它们与新的Visual C ++版本,包括Visual Studio 2008.所以,使用内存跟踪工具Visual Studio 2008令人沮丧,错误,并且在某些情况下是不可能的。

答案 6 :(得分:1)

由于VC6大部分Visual Studio的焦点都集中在C#和.NET以及其他功能上,所以一些C ++老用户认为VC6是过去的好时光。从那时起,Visual Studio for C ++开发人员的工作有所改进,但并不像.NET用户那样显着。

VS2008明显优于VC6的一种方式是它可以并行构建C ++项目。即使在单个CPU系统上,这也可以显着加快构建速度,但尤其是如果您有多个核心。

答案 7 :(得分:1)

您是否知道MS VC6的STL实现不是线程安全的?特别是,即使使用多线程库编译,basic_string中的引用计数优化也会爆炸。 http://support.microsoft.com/kb/813810

答案 8 :(得分:1)

如果安装VS6的所有Service Pack,您仍然拥有可靠的IDE /编译器组合。作为一个必须在野外(通过Internet)发布产品的软件开发人员,我不想每次都运送VC ++运行时和.NET框架(我不能将它们直接捆绑在我的安装程序/可执行文件中,它被Microsoft禁止) )。你知道,运行千字节代码的几兆字节运行时有点愚蠢。 VC ++ 6.0只需要你的可执行文件和2 .DLL。

此外,调试运行时无法与VC ++ .NET一起分发,当我的客户端需要对我的产品进行一些调试时,这不是很好:)

在我看来,我仍然使用VC ++ 6.0的主要原因,但IDE本身是丑陋的(即:没有标签支持)。我通常使用代码块来绕过IDE限制(CodeBlocks支持所有VC ++版本的CL.EXE / LINK.EXE)

Cobolfoo

答案 9 :(得分:0)

Visual C ++ 2008更符合标准(Visual Studio 6不支持1998年的C ++标准集)。

答案 10 :(得分:0)

VS2008具有更好的编译器(更符合标准,更好的优化......)。

VS6拥有更快的IDE。 VS2008 IDE有许多不错的功能,但它比VS6慢。

答案 11 :(得分:0)

您将看到从6.0到2008的快速改进列表:

  • 许多错误修复
  • 更好地符合C ++标准
  • 更好的编译器优化
  • 改进的用户界面(更好的智能感知等)

人们有时会忘记的一件事是VS 6.0已经超过10年了!在这一点上,我看不出有人想要坚持下去。

答案 12 :(得分:0)

我们遇到的一件困难事情就是“价值”成了关键词。

答案 13 :(得分:0)

与2008年相比,Visual C ++ 6有时会非常错误。特别是有些事情:

  • 模板支持/奇怪程度不佳(例如sometemplate<othertemplate<t>>无效,但sometemplate< othertemplate<t>&gt;正在工作)
  • 不符合标准
  • 资源编辑器是垃圾(“蓝线”似乎随机移动,除其他外)
  • 仅支持编辑某些类型的8位位图(我必须使用imagemagick转换保存在paint.net中的位图才能在图片资源中看到)
  • 使用只读文件/ quirky sourcesafe集成的可怕支持。

有时在VS6中开发感觉就像试图让网站在Internet Explorer 5.5中看起来更好看