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

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

What are the differences between Visual C++ 6.0 and Visual C++ 2008?

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

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

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


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库非常慢
  • 如上所述,专业版中没有分析器

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


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

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


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

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

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

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


在我的脑海中,新Visual Studio的优势在于:

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

缺点:

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

如果为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


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


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

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


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

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


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

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


与2008年相比,Visual C ++ 6有时会出现问题。特别是有些事情:

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

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


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


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

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

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


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

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


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


推荐阅读