Стоит ли портировать с VC6 -> vc2005,2008? - PullRequest
2 голосов
/ 18 ноября 2008

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

Ответы [ 2 ]

8 голосов
/ 24 ноября 2008
  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.

3 голосов
/ 18 ноября 2008

Насколько велика база кода?

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

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

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

...