Каковы различия между Visual C++ 6.0 и Visual C++ 2008?

каковы преимущества / недостатки между MS VS C++ 6.0 и MSVS C++ 2008?

основная причина задать такой вопрос заключается в том, что есть еще много достойных программистов, которые предпочитают использовать старую версию вместо новейшей версии.

есть ли причина, по которой может предпочесть старое новому?

14 ответов


Ну, во-первых, это может быть потому, что исполняемые файлы, построенные с MSVS 6, требуют только msvcrt.dll (C runtime), который поставляется с Windows сейчас.

исполняемые файлы MSVS 2008 должны msvcrt9 поставляться с ними (или уже установлены).

кроме того, у вас есть много библиотек OSS, уже скомпилированных для Windows 32 бит со средой выполнения 6.0 C, в то время как для среды выполнения 2008 C вы должны взять источник и скомпилировать их самостоятельно.

(большинство из этих библиотек фактически скомпилирован с MinGW,который также использует среду выполнения 6.0 C-возможно, это еще одна причина).


преимущества Visual Studio 2008 по сравнению с Visual C++ 6.0:

  • гораздо больше стандартов, совместимых с компилятором C++, с лучшей обработкой шаблонов
  • поддержка целей x64 / mobile / XBOX
  • улучшена реализация STL
  • поддержка C++0x TR1 (интеллектуальные указатели, регулярные выражения и т. д.)
  • безопасная библиотека времени выполнения C
  • улучшенная навигация по коду
  • улучшен отладчик; возможность запуска удаленной отладки сеансы
  • лучшая оптимизация компилятора
  • исправление ошибок
  • быстрее строит на многоядерных/многопроцессорных систем
  • улучшенный пользовательский интерфейс IDE, со многими приятными функциями
  • улучшена поддержка макросов в среде IDE; DTE позволяет получить доступ к большему количеству методов и переменных IDE
  • обновлена библиотека MFC (в VS2008 пакет обновления 1)
  • поддержка OPENMP (легкая многопоточность) (только в VS2008 профессионал.)

недостатки перехода в Visual Studio 2008:

  • IDE намного медленнее, чем VS6
  • Intellisense по-прежнему имеет проблемы с производительностью (замена его VisualAssistX может помочь)
  • бок о бок сборки делают развертывание приложения гораздо более проблематичным
  • локальная (автономная) библиотека MSDN чрезвычайно медленная
  • как уже упоминалось здесь, никакой профилировщик в Профессионале версия

в духе недавнего Джоэла блоге, я объединил некоторые из других ответов, опубликованных в одном ответе (и сделал это сообщение общественным, поэтому я не буду получать от него репутацию). Надеюсь, ты не против. Большое спасибо Laur, NeARAZ, 17 из 26, me.yahoo.com и всех остальных, кто ответил. -- ChrisN


Я хотел бы добавить, что приложения, разработанные с использованием Visual C++ 2008, не должны требовать больше библиотек DLL, чем приложения, разработанные с использованием Visual C++ 6.0. Это только конфигурация проекта по умолчанию.

Если вы заходите в свойства проекта, C / C++, генерацию кода, а затем измените свой Библиотека Времени Выполнения от многопоточной DLL и многопоточной отладочной DLL (конфигурации выпуска и отладки) до многопоточная и многопоточная Debug, то ваше приложение должно иметь меньше зависимостей.


с моей головы, преимущества новой Visual Studio являются:

  • более строгое соблюдение стандартов
  • поддержка x64 / mobile / XBOX цели
  • лучшая оптимизация компилятора
  • (путь) лучшая обработка шаблона
  • улучшен отладчик; возможность запуск удаленных сеансов отладки
  • улучшена IDE
  • улучшена поддержка макросов; DTE позволяет получить доступ к большему количеству методов IDE и переменные

недостатки:

  • IDE кажется медленнее
  • Intellisense по-прежнему имеет производительность вопросы (замена его на VisualAssistX может помочь)
  • runtime не везде
  • интеграция управления версиями не до 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 разочаровывают, errorprone и, в некоторых случаях, невозможны.


поскольку VC6 большая часть внимания Visual Studio была сосредоточена на C# и .NET, а также на других функциях, поэтому некоторые старожилы c++ видят VC6 как старые добрые времена. С тех пор в Visual Studio для разработчиков C++ все улучшилось, но не так резко, как для пользователей .NET.

один из способов, которым VS2008 значительно лучше, чем VC6, заключается в том, что он может создавать проекты C++ параллельно. Это может привести к значительно более быстрым сборкам даже на одной системе CPU, но особенно если у вас несколько ядер.


знаете ли вы, что реализация MS VC6 STL не является потокобезопасной? В частности, оптимизация подсчета ссылок в basic_string взрывается даже при компиляции с многопоточными библиотеками. http://support.microsoft.com/kb/813810


Если вы устанавливаете все пакеты обновления для VS6, у вас все еще есть твердая комбинация IDE/компилятора. Как разработчик программного обеспечения, который должен выпускать продукты в дикой природе (через Интернет), я не хочу каждый раз отправлять среды выполнения VC++ и .NET framework (я не могу связывать их непосредственно в моем установщике/исполняемом файле, это запрещено Microsoft). Вы знаете, несколько мегабайт времени выполнения для запуска килобайт кода-это глупо. VC++ 6.0 нужен только ваш исполняемый файл и 2 .DLL в лучшем случае.

кроме того, отладка время выполнения не может быть распространено с VC++ .NET, не очень хорошо, когда у меня есть клиент, который должен сделать некоторую отладку моих продуктов:)

есть, на мой взгляд, основные причины, по которым я все еще использую VC++ 6.0, но сама IDE уродлива (т. е.: нет поддержки табуляции). Обычно я обхожу ограничения IDE, используя вместо этого codeblocks (CodeBlocks поддерживают CL.EXE-ФАЙЛ/ССЫЛКУ.EXE для всех версий VC++)

Cobolfoo


Visual C++ 2008 гораздо более соответствует стандартам (Visual Studio 6 не поддерживает набор стандартов C++ в 1998 году).


VS2008 имеет лучший компилятор (гораздо больше стандартов, совместимых, лучшей оптимизации, ...).

VS6 имеет гораздо более быструю IDE. VS2008 IDE имеет много приятных функций, но это низкий медленнее, чем VS6.


быстрый список улучшений, которые вы увидите от 6.0 до 2008:

  • исправление ошибок
  • лучшее соответствие стандарту C++
  • лучшая оптимизация компилятора
  • улучшенный пользовательский интерфейс (лучше intellisense и т. д.)

одна вещь, которую люди иногда забывают, это то, что VS 6.0 уже более 10 лет! На данный момент, я не вижу, как кто-то хочет придерживаться.


одна трудная вещь, с которой мы столкнулись, заключалась в том, что "значение" стало ключевым словом.


Visual C++ 6 может быть очень багги в разы по сравнению с 2008. Некоторые вещи, в частности:

  • плохая поддержка шаблонов/странности (например sometemplate<othertemplate<t>> не работает, но sometemplate< othertemplate<t> > работает)
  • не соответствуют стандартам
  • редактор ресурсов-мусор ("синие линии", похоже, перемещаются случайным образом, среди прочего)
  • поддерживает только редактирование некоторых видов 8-битных растровых изображений (я должен использовать imagemagick для преобразования растровых изображений, сохраненных в paint.net быть возможность быть замеченным в ресурсах изображения)
  • ужасная поддержка работы с файлами только для чтения / причудливая интеграция sourcesafe.

иногда разработка в VS6 чувствует, как пытается получить веб-сайты, хорошо выглядящие в internet explorer 5.5