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

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
10
задан GEOCHET 9 March 2009 в 12:26
поделиться

14 ответов

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

MSVS 2 008 исполняемых файлов нужен msvcrt9, поставленный с ними (или уже установленный).

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

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

4
ответ дан 3 December 2019 в 13:35
поделиться

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

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

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

0
ответ дан 3 December 2019 в 13:35
поделиться

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

0
ответ дан 3 December 2019 в 13:35
поделиться

Быстрый список улучшений Вы будете видеть движение от 6,0 до 2008:

  • Много исправлений ошибок
  • Лучшее соответствие к стандарту C++
  • Лучшая компиляторная оптимизация
  • Улучшенный UI (лучше intellisense, и т.д.)

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

0
ответ дан 3 December 2019 в 13:35
поделиться

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

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

0
ответ дан 3 December 2019 в 13:35
поделиться

2008 Visual C++ является намного большим количеством совместимых стандартов (Visual Studio 6 не поддерживает стандартный набор C++ в 1998).

0
ответ дан 3 December 2019 в 13:35
поделиться

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

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

1
ответ дан 3 December 2019 в 13:35
поделиться

Помимо упомянутого выше развертывания, основным преимуществом MSVC 6.0 является скорость. Поскольку это - 10-летний IDE, это чувствует себя довольно быстрым на современном компьютере. Более новые версии Visual Studio предлагают больше расширенных функций, но они прибывают в стоимость (сложность и более медленная скорость).

Но самый большой недостаток MSVC 6.0 является своим несовместимым C ++-Compiler и Библиотекой. Если Вы намереваетесь сделать серьезное Программирование на C++, это - выставочный стопор. Если Вы только создаете Приложения MFC, это - вероятно, не большая часть проблемы.

1
ответ дан 3 December 2019 в 13:35
поделиться

Первое, что пришло на ум преимущества новой Visual Studio:

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

Недостатки:

  • IDE кажется медленнее
  • Intellisense все еще имеет проблемы производительности (заменяющий, он с VisualAssistX может помочь),
  • время выполнения, не универсально доступное
  • интеграция управления исходным кодом не в нормальном состоянии (хотя во всей справедливости VC6 испытывает недостаток в этой функции полностью),
3
ответ дан 3 December 2019 в 13:35
поделиться

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

2
ответ дан 3 December 2019 в 13:35
поделиться

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

  • Намного больше стандартов совместимый компилятор C++, с лучшей шаблонной обработкой
  • Поддержка x64 / мобильный / цели XBOX
  • Улучшенная реализация STL
  • Поддержка C++ 0x TR1 (интеллектуальные указатели, регулярные выражения, и т.д.)
  • Защитите библиотеку времени выполнения C
  • Улучшенная навигация кода
  • Улучшенный отладчик; возможность выполнить удаленные сеансы отладки
  • Лучшая оптимизация компилятора
  • Много исправлений ошибок
  • Быстрее основывается на многоядерных системах / системах мульти-ЦП
  • Улучшенный пользовательский интерфейс IDE, со многими хорошими функциями
  • Улучшенная макро-поддержка в IDE; DTE предоставляет доступ к большему количеству методов IDE и переменных
  • Обновленная библиотека MFC (в Пакете обновления VS2008 1)
  • поддержка OpenMP (легкая многопоточность) (только в про VS2008.)

Недостатки перемещения в Visual Studio 2008:

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

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

28
ответ дан 3 December 2019 в 13:35
поделиться

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

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

4
ответ дан 3 December 2019 в 13:35
поделиться

Visual C++ 6.0 интегрируется с инструментами отслеживания памяти, теми, которые Очищают, HeapAgent, BoundsChecker и MemCheck, полностью и хорошо так как те инструменты отслеживания памяти активно сохранялись и настойчиво продавались после того, как Visual C++ 6.0 вышел.

Однако, так как C++ был вне моды некоторое время, компании, которые продают инструменты отслеживания памяти все еще, продают их, но никогда не обновляют или интегрируют их с новыми версиями Visual C++, включая Visual Studio 2008. Так, использование инструментов отслеживания памяти с Visual Studio 2008 печально, подвержено ошибкам и, в некоторых случаях, невозможно.

1
ответ дан 3 December 2019 в 13:35
поделиться

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

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

На мой взгляд, есть основные причины, по которым я все еще использую VC ++ 6.0, но сама IDE уродлива (то есть: нет поддержки табуляции). Обычно я обхожу ограничения IDE, используя вместо них кодовые блоки (CodeBlocks поддерживает CL.

1
ответ дан 3 December 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: