Visual C ++ 6.0和Visual C ++ 2008之间有什么区别?
MS VS C ++ 6.0和MSVS C ++ 2008之间的优缺点是什么?
提出这样一个问题的主要原因是,仍然有许多体面的程序员更喜欢使用旧版本而不是最新版本。
有什么理由可能会偏爱旧版本而不是新版本?
解决方案
回答
好吧,可能是因为使用MSVS 6构建的可执行文件仅需要Windows附带的msvcrt.dll(C运行时)。
MSVS 2008可执行文件需要随其附带(或者已安装)的msvcrt9.
另外,我们已经使用6.0 C运行时为Windows 32位编译了许多OSS库,而对于2008 C运行时,则必须自己获取源代码并进行编译。
(大多数库实际上是用MinGW编译的,它也使用6.0 C运行时,这可能是另一个原因)。
回答
Visual C ++ 2008更加符合标准(Visual Studio 6不支持1998年设置的C ++标准)。
回答
VS2008具有更好的编译器(更多标准兼容,更好的优化...)。
VS6具有更快的IDE。 VS2008 IDE具有许多不错的功能,但比VS6慢。
回答
我们将看到从6.0到2008的改进的快速列表:
- 许多错误修复
- 更好地符合C ++标准
- 更好的编译器优化
- 改进的用户界面(更好的智能感知等)
人们有时忘记的一件事是,VS 6.0已有10多年的历史了!在这一点上,我还没有看到有人愿意坚持下去。
回答
与Visual C ++ 6.0相比,Visual Studio 2008的优点:
- 更多符合标准的C ++编译器,具有更好的模板处理
- 支持x64 /移动/ XBOX目标
- 改进的STL实施
- 支持C ++ 0x TR1(智能指针,正则表达式等)
- 安全的C运行时库
- 改进的代码导航
- 改进的调试器;运行远程调试会话的可能性
- 更好的编译器优化
- 许多错误修复
- 在多核/多CPU系统上更快地构建
- 改进的IDE用户界面,具有许多不错的功能
- 改进了对IDE的宏支持; DTE允许访问更多的IDE方法和变量
- 更新了MFC库(在VS2008 Service Pack 1中)
- 支持OPENMP(轻松多线程)(仅在VS2008 pro中。)
迁移到Visual Studio 2008的缺点:
- IDE比VS6慢很多
- Intellisense仍然存在性能问题(将其替换为VisualAssistX可以有所帮助)
- 并行程序集使应用程序部署更加困难
- 本地(离线)MSDN库非常慢
- 如此处所述,专业版中没有探查器
本着Joel最近的博客文章的精神,我将发布的其他一些答案合并为一个答案(并将其作为社区拥有的帖子,因此我不会从中获得代表)。我希望你不要介意。非常感谢Laur,NeARAZ(26页中的17页),me.yahoo.com和所有其他回答。克里斯
回答
除了上述部署之外,MSVC 6.0的主要优点是速度。因为它使用了10年的IDE,所以在现代计算机上感觉非常快。较新版本的Visual Studio提供了更高级的功能,但是它们要付出一定的代价(复杂度和速度较慢)。
但是,MSVC 6.0最大的缺点是其不兼容的C ++编译器和库。如果我们打算进行认真的C ++编程,那么这是一个绝妙的选择。如果仅构建MFC应用程序,则可能不是什么大问题。
回答
我们遇到的一件困难的事是"值"成为关键字。
回答
Visual C ++ 6.0与内存跟踪工具(如Purify,HeapAgent,BoundsChecker和MemCheck)集成得很好,因为这些内存跟踪工具在Visual C ++ 6.0推出后就得到了积极维护和积极销售。
但是,由于C ++已经流行了一段时间,因此销售内存跟踪工具的公司仍在销售它们,但从未将其更新或者与新的Visual C ++版本(包括Visual Studio 2008)集成。令人沮丧,容易出错,在某些情况下甚至是不可能的。
回答
我想补充一点,并不是使用Visual C ++ 2008开发的应用程序必须比使用Visual C ++ 6.0开发的应用程序需要更多的DLL。这只是默认的项目配置。
如果进入项目属性,C / C ++,代码生成,然后将运行时库从多线程DLL和多线程调试DLL(发布和调试配置)更改为多线程和多线程调试,则应用程序应则有更少的依赖关系。
回答
令我震惊的是,新的Visual Studio的优点是:
- 严格遵守标准
- 支持x64 /移动/ XBOX目标
- 更好的编译器优化
- (方式)更好的模板处理
- 改进的调试器;运行远程调试会话的可能性
- 改进的IDE
- 改进的宏观支持; DTE允许访问更多的IDE方法和变量
缺点:
- IDE似乎较慢
- Intellisense仍然存在性能问题(将其替换为VisualAssistX可以有所帮助)
- 运行时不是普遍可用的
- 源代码控制集成未达到同等水平(尽管公平地说VC6完全缺少此功能)
回答
自VC6以来,Visual Studio的大部分焦点都集中在Cand .NET以及其他功能上,因此一些C ++老手将VC6视为美好的过去。自那时以来,Visual Studio for C ++开发人员的情况已有所改善,但远没有.NET用户显着。
VS2008明显优于VC6的一种方法是它可以并行构建C ++项目。即使在单个CPU系统上,这也可以显着加快构建速度,但是如果我们有多个内核,则尤其如此。
回答
我们是否知道MS VC6的STL实现不是线程安全的?特别是,即使使用多线程库进行编译,basic_string中的引用计数优化也会炸毁。
http://support.microsoft.com/kb/813810
回答
与2008年相比,Visual C ++ 6有时可能会出现很多错误。特别是某些方面:
- 较差的模板支持/功能(例如," sometemplate <othertemplate <t >>"不起作用,但是" sometemplate <othertemplate <t>">起作用)
- 不符合标准
- 资源编辑器是垃圾("蓝线"似乎随机地移动)
- 仅支持编辑某些类型的8位位图(我必须使用imagemagick转换保存在paint.net中的位图才能在图片资源中看到)
- 对使用只读文件/古怪的sourcesafe集成提供了可怕的支持。
有时在VS6中开发感觉就像是试图使网站在Internet Explorer 5.5中看起来更好
回答
如果安装了VS6的所有Service Pack,我们仍将拥有稳定的IDE /编译器组合。作为必须在野外(通过Internet)发布产品的软件开发人员,我不想每次都交付VC ++运行时和.NET框架(我不能将它们直接捆绑在我的安装程序/可执行文件中,Microsoft禁止这样做)。我们知道,运行兆字节代码的几兆字节的运行时有点愚蠢。 VC ++ 6.0最多只需要可执行文件和2个.DLL。
另外,调试运行时不能与VC ++ .NET一起分发,当我有一个需要对我的产品进行一些调试的客户端时,效果不是很好:)
我认为仍然使用VC ++ 6.0的主要原因是主要原因,但IDE本身很丑陋(即:不支持制表符)。我通常通过改用代码块来绕过IDE的限制(对于所有VC ++版本,CodeBlocks支持CL.EXE / LINK.EXE)
Cobolfoo