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 Studio 2008 相对于 Visual C++ 6.0 的优点:

  • 更多符合标准的 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 可以提供帮助)
  • 并行程序集使应用程序部署变得更加困难
  • 本地(离线)MSD​​N库速度极慢
  • 如上所述 这里, ,专业版中没有分析器

本着乔尔最近的精神 博客文章, ,我已将发布的一些其他答案合并为一个答案(并将其设为社区拥有的帖子,因此我不会从中获得代表)。我希望你不介意。非常感谢 Laur、NeARAZ、17 of 26、me.yahoo.com 以及其他所有回答的人。——克里斯·N

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

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

在我看来,新的 Visual Studio 的优点是:

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

缺点:

  • IDE 似乎较慢
  • IntelliSense仍然存在性能问题(用VisualAssistx替换它可以有所帮助)
  • 运行时不普遍可用
  • 源控制集成不到PAR(尽管公平性VC6完全缺乏此功能)

除了上面提到的部署之外,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 Studio 2008 中使用内存跟踪工具是令人沮丧的、容易出错的,并且在某些情况下是不可能的。

自 VC6 以来,Visual Studio 的大部分焦点都集中在 C# 和 .NET 以及其他功能上,因此一些 C++ 老手将 VC6 视为过去的美好时光。从那时起,C++ 开发人员在 Visual Studio 中的情况已经有所改善,但不如 .NET 用户那么显着。

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

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

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

另外,调试运行时不能与 VC++ .NET 一起分发,当我有一个客户需要对我的产品进行一些调试时,这不太好:)

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

科博富

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

VS2008 有更好的编译器(更多的标准兼容,更好的优化,...)。

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

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

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

人们有时会忘记的一件事是 VS 6.0 已经有 10 多年的历史了!在这一点上,我不知道会有人愿意坚持下去。

我们遇到的一件棘手的事情是“价值”成为了一个关键词。

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

  • 模板支持不佳/奇怪(例如 sometemplate<othertemplate<t>> 不工作,但是 sometemplate< othertemplate<t> > 工作)
  • 不符合标准
  • 资源编辑器是垃圾(除其他外,“蓝线”似乎随机移动)
  • 仅支持编辑某些类型的8位位图(我必须使用imagemagick将paint.net中保存的位图转换为能够在图片资源中看到)
  • 对使用只读文件/奇怪的源安全集成的支持非常糟糕。

有时,在 VS6 中进行开发感觉就像试图让网站在 Internet Explorer 5.5 中看起来不错

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top