【问题标题】:What are the differences between Visual C++ 6.0 and Visual C++ 2008?Visual C++ 6.0 和 Visual C++ 2008 之间有什么区别?
【发布时间】:2010-09-08 21:49:52
【问题描述】:

MS VS C++ 6.0 和 MSVS C++ 2008 之间的优缺点是什么?

问这个问题的主要原因是仍然有很多体面的程序员更喜欢使用旧版本而不是最新版本。

有什么理由可能更喜欢旧的而不是新的?

【问题讨论】:

    标签: c++ visual-studio visual-c++-6


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 可以静态链接VCRT,没有任何依赖。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 不确定 VC++ 6 代码是否可以在 VC++ 2005 中编译。我花了一个下午的时间进行调整以使我的代码正常工作。如果代码库很大,那么进行切换可能会非常困难。有时候,你认识的魔鬼更好!
        【解决方案5】:

        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、17 of 26、me.yahoo.com 以及其他所有回答的人。 -- 克里斯N

        【讨论】:

        • VS6 ClassWizard 与自定义类型和验证一起使用时,生成对话框的速度比后来的 VS 实现快得多。我仍然将它用作代码生成器并返回 VS2005 进行发布构建。
        • VS6 是原生 C++(过去的美好时光)。以后的版本主要是用 .NET 制作的。
        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            Visual C++ 6.0 与内存跟踪工具(如 Purify、HeapAgent、BoundsChecker 和 MemCheck)集成得非常好,因为这些内存跟踪工具在 Visual C++ 6.0 推出后得到积极维护和积极销售。

            但是,由于 C++ 已经过时了一段时间,销售内存跟踪工具的公司仍在销售它们,但从未更新或将它们与新的 Visual C++ 版本(包括 Visual Studio 2008)集成。因此,使用内存跟踪工具与Visual Studio 2008 令人沮丧、容易出错,并且在某些情况下是不可能的。

            【讨论】:

              【解决方案9】:

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

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

              【讨论】:

                【解决方案10】:

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

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

                缺点:

                • IDE 似乎较慢
                • Intellisense 仍有性能 问题(将其替换为 VisualAssistX 可以提供帮助)
                • 运行时并非普遍可用
                • 源代码控制集成达不到 标准杆(虽然平心而论 VC6 完全没有这个功能)

                【讨论】:

                  【解决方案11】:

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

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

                  【讨论】:

                    【解决方案12】:

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

                    【讨论】:

                      【解决方案13】:

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

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

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

                      【讨论】:

                        【解决方案14】:

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

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

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

                        Cobolfoo

                        【讨论】:

                          猜你喜欢
                          • 2010-09-12
                          • 2017-08-06
                          • 2013-03-15
                          • 2010-11-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2010-11-24
                          相关资源
                          最近更新 更多