Действительно ли стоит портировать с VC6 ->vc2005,2008?
-
08-07-2019 - |
Вопрос
Какие проблемы вы предвидите при этом?
Решение
- VC 6 больше не поддерживается Microsoft., в любом случае.Если что-то пойдет не так и по какой-либо причине мы не сможем скомпилировать, мы полностью не сможем получить никакой помощи от Microsoft.Кажется маловероятным, что что-то может пойти не так, но если рассматриваемый код является основным источником дохода, то вам следует сбалансировать ситуацию.
- Невозможно скомпилировать 64-битный код в VC6.32-битные программы работают в 64-битной Windows — по крайней мере, на данный момент.Но если вам нужно воспользоваться потенциальным выигрышем в скорости и памяти за счет создания собственного 64-битного продукта (например, иметь возможность использовать более 3 ГБ ОЗУ в одном процессе), тогда VC6 вам не подойдет.
- 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, и выглядело нормально (?), Я не был уверен, что все работает на самом деле как и должно было быть.
Так что на самом деле мой совет - рассмотреть размер кода и доступность тестов, а также подумать, действительно ли код должен быть портирован (в моем случае это было Да, но это не всегда так, особенно если программное обеспечение скоро исчезнет)