2

それを行うことであなたが予見するすべての問題は何ですか。

4

2 に答える 2

8
  1. VC 6 は、Microsoft によってサポートされなくなりました。何か問題が発生し、なんらかの理由でコンパイルできなかった場合、Microsoft からの支援を得ることができず、完全に独力になります。このように何かがうまくいかない可能性は低いと思われますが、問題のコードが主な収入源である場合は、物事のバランスを取る必要があります。
  2. VC6 で 64 ビット コードをコンパイルすることはできません。32 ビット プログラムは 64 ビット Windows で実行されます -- 少なくとも今のところは。しかし、ネイティブ 64 ビット製品を作成することで得られる潜在的な速度とメモリの利点 (たとえば、1 つのプロセスで 3 GB を超える RAM を使用できるなど) を利用する必要がある場合は、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 である必要があることを示唆しています。

于 2008-11-24T16:24:43.200 に答える
3

あなたが話しているコードベースの規模はどれくらいですか?

小さなプログラム (ほとんどがテンプレート化されていない C++ コード) の移植は、かなり簡単です。

しかし、テンプレートを使用するコードを VC6 から VC2005 に 100.000 行変換しなければならなかったことがあり、悪夢のような 1 週間 (5 日間の作業) でした。主な問題は、問題の約 30% (70 % はかなり些細なことで、検索と置換で修正できました)。しかし、それ以上の問題は、古いコードにはテスト ケースもテスト フレームワークもなかったという事実でした。そのため、アプリケーションをコンパイルして segfault を回避し、正常に見えるようになった後でも (?)、すべてが実際に機能するという保証はありませんでした。あるべき姿だった。

したがって、実際に私のアドバイスは、コードのサイズとテストの可用性を考慮し、コードを本当に移植する必要があるかどうかも検討することです (私の場合ははいでしたが、常にそうであるとは限りません。特にソフトウェアがすぐに消えます)

于 2008-11-18T07:46:15.560 に答える