Вопрос

Какие проблемы вы предвидите при этом?

Это было полезно?

Решение

  1. VC 6 больше не поддерживается Microsoft., в любом случае.Если что-то пойдет не так и по какой-либо причине мы не сможем скомпилировать, мы полностью не сможем получить никакой помощи от Microsoft.Кажется маловероятным, что что-то может пойти не так, но если рассматриваемый код является основным источником дохода, то вам следует сбалансировать ситуацию.
  2. Невозможно скомпилировать 64-битный код в VC6.32-битные программы работают в 64-битной Windows — по крайней мере, на данный момент.Но если вам нужно воспользоваться потенциальным выигрышем в скорости и памяти за счет создания собственного 64-битного продукта (например, иметь возможность использовать более 3 ГБ ОЗУ в одном процессе), тогда VC6 вам не подойдет.
  3. VC9 гораздо лучше соответствует стандартам..Соответствие стандартам VC6 было очень плохим.На самом деле это одновременно и причина для портирования, и, возможно, причина не делать этого.Программисты, использовавшие VC6, привыкли делать что-то «неправильным способом», и большую часть этого кода необходимо будет реорганизовать для работы в VC9.

Простым примером № 3 выше является цикл for:

for( int n = 0; n < someMax; ++n )
{
  // do stuff
}

printf("Did %d stuffs", n);

Этот код работает в VC6, но не работает в VC9.На самом деле это уродливая программа: тот факт, что VC6 позволяет это, является дефектом VC6.

Решение о портировании с VC6 на VC9 не является спешным решением.Вы должны учитывать, насколько трудным будет проект, и сбалансировать это с любыми выгодами, которые вы получите, и любыми проблемами, которых вы избежите.

Вам следует просмотреть списки критических изменений Microsoft, прежде чем принимать решение о том, стоит ли и как реализовывать этот проект.Первый список, содержащий изменения с VC6 на VC7, представляет собой огромный список.Остальные намного меньше по сравнению с ними.Что говорит о том, что если портировать с VC6 на что-нибудь, то это должна быть как минимум 2005-я версия.

Другие советы

Насколько большой кодовой базы вы говорите?

Портирование небольшой программы (в основном это не шаблонный код C ++) должно быть довольно тривиальным.

Однако однажды мне пришлось преобразовать 100 000 строк кода, использующего шаблоны, из VC6 в VC2005, и это была кошмарная неделя (5 дней работы), главная проблема заключалась в том, что мне приходилось вручную исправлять около 30% проблемы (70% были довольно тривиальными и могли исправить их с помощью поиска и замены). Но еще одной проблемой было то, что в старом коде не было ни тестовых примеров, ни тестовой среды, поэтому даже после того, как я получил приложение для компиляции, а не для segfault, и выглядело нормально (?), Я не был уверен, что все работает на самом деле как и должно было быть.

Так что на самом деле мой совет - рассмотреть размер кода и доступность тестов, а также подумать, действительно ли код должен быть портирован (в моем случае это было Да, но это не всегда так, особенно если программное обеспечение скоро исчезнет)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top