6

最近、私はVC6コンパイラを指す問題に直面しています。

それらのいくつかは次のとおりです。

  1. function-try-blockは機能しません。関連するQ
  2. クラス内定数は機能しません。
  3. __FUNCTION_(関数名を取得するマクロ)が機能しない
  4. 最新の追加は、void関数をfor_eachの一部として渡すことを許可しないことです。

以下の例は、VC6コンパイラでコンパイルされていません。「エラーC2562:'()':'void'関数が値を返します」と表示されます。VC6は、void関数がfor_eachに渡されることを好まないようです。

class Temp
{
public:
    Temp(int i):m_ii(i)
    {}

    int getI() const
    {
        return m_ii;
    }

    void printWithVoid()
    {
        cout<< "i = "<<m_ii<<endl;

    }
    bool printWithBool()
    {
        cout<< "i = "<<m_ii<<endl;
        return true;
    }
private:
    int m_ii;
};

int main(void) 
{
    std::vector<Temp>  arrTempObjects;

    arrTempObjects.push_back(Temp(0));
    arrTempObjects.push_back(Temp(2));

    //Doesnot work, compiler error 
    std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithVoid));

    //Works
    std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithBool));

    return 0;
}

VC6.0に関連する他の問題に直面しましたか。これらの問題を解決するための回避策はありますか?それとも、コンパイラを変更する時が来ましたか?

4

12 に答える 12

37

率直に言って、最新のコンピューターを購入して Visual Studio 2008 に切り替えない理由がほとんどわかりません。

VC6 には不十分な STL があり、C++ 標準への準拠が不十分で、GUI が廃止されています。

競合他社に自分よりも優れたツールを使用させてはなりません。

于 2009-04-09T09:32:27.327 に答える
7

さて、これが問題です。VC6 コンパイラは最悪です。しかし... IDEはかなり良いです。

VS2005 には、はるかに優れたソース管理サポートがあります。それ以外の場合は、デバッグがはるかに遅くなり、出力行を挿入すると指数関数的に減衰するくだらない出力ペインがあり (絶対的なガベージ コーディングとは何ですか?)、ヘルプ システムは何倍も遅くなり、デバッグして続行します (おそらく他の IDE に対する Microsoft の最高の機能)。かなり壊れています。

。ネット?確かに、VS20xx が唯一の方法です。ただし、VC6/MFC (組み込みシステムへのインターフェイスなど) に固執している 1 つの小さなクライアントの場合、私は実際に VC6 での作業を楽しんでいます。それはただ速いです。

2008年? したいのですが、クライアントの移行に時間がかかります。まだ誰も持っていません。

于 2009-04-15T12:31:08.520 に答える
6

VC6 コンパイラに別れを告げる時が来ましたか?

はい。

于 2009-04-15T12:33:06.737 に答える
3

VC6は、最新のC++のほとんどを実行できません。おそらくGraphのように、何年も前にBoostライブラリの1つを使おうとしたことを思い出します。それは、いたるところに「INTERNAL COMPILER ERROR」を表示していたので、最終的にはそれを取り入れました。

于 2009-04-09T09:33:46.947 に答える
3

答えはイエスです。できるだけ早く。問題のようにコストがかかる場合は、VC++ Express や Code::Blocks などの無料の代替手段があります。互換性の問題を解決する際の苦痛は、アップグレードしない理由にはならないということです。

障害の可能性があると私が考える唯一の理由は、移植が困難/時間がかかる MFC コードがある場合です。その場合、VC++ Express (MFC のサポートなし) を使用できず、少なくとも VS std に投資する必要があります。版。約 300 ユーロかかります (お住まいの地域によって異なります)。

于 2009-04-09T10:00:30.847 に答える
2

数か月前にg++でVC++6.0からCode::Blocks(FOSS)に変更しましたが、実際には振り返りませんでした。CBでのgdbの実装はそれほど洗練されていないので、VC ++デバッガーが少し恋しいですが、それだけです。IDEのいくつかの機能(コード補完、ツールチップ、依存関係のxalculation)はより適切に機能し、コンパイラーは明らかにはるかに優れています。

あなたのポイントに関しては、関数試行ブロックはほとんど広く使用されていない機能であり、ほとんどの人はそれらがかなり役に立たないと思います。また、__FUNCTION__マクロはC ++標準の一部ではないため、移植性が問題になる場合は、マクロにあまり依存しないでください。

于 2009-04-09T09:41:14.980 に答える
2

いいえ、10 年前にさよならを言う時が来ました。いくつかの理由を次に示します。

  • Microsoft とその他の両方から、標準に準拠した無料のコンパイラが利用可能です。
  • VC6 は、C++ 言語が標準化される前に作成されたものであり、標準に準拠しているとは言えません。特に、テンプレートと標準ライブラリは、ISO C++ でこれらの機能が実際にどのように機能するかに関係なく、独自の世界に住んでいます。コンパイルする言語は C++ ではありません。これは、標準化前の C++、Microsoft の拡張機能、コンパイラの制限事項、およびバグのハイブリッドです。どちらも望ましいものではありません。
  • VC6 は、場合によっては無効なコードを生成することが知られています。自家製のバグのある非標準言語をコンパイルするだけでなく、無効な最適化を行ってクラッシュを引き起こしたり、場合によっては単に実行できない悪いアセンブリを実際に生成したりします。

それは壊れていて、いつも壊れていました。これは、コンパイラがリリースされたとき (言語が標準化されたとき) に存在しなくなった言語をコンパイルするように設計されており、そのタスクでも失敗し、数え切れないほどのバグがあり、そのうちのいくつかは半ダースで修正されました。リリースされたサービス パック。しかし、それらすべてではなく、すべての重要なものでさえありません。

もちろん、これの欠点は、アプリケーションが壊れている可能性が高いことです。(あなたが悪いプログラマだからではなく、壊れたコンパイラをターゲットにしているからです。VC6 に受け入れられるには壊れている必要があります)

それを標準準拠のコンパイラに移植するのは大変な作業になる可能性があります。古いプロジェクトをインポートして「ビルド」をクリックすればうまくいくと思い込まないでください。

そのため、コンパイラを切り替えるために 1 か月の休暇を取ることができない大企業の一員である場合は、チームの一部が VC6 バージョンを維持している間に、サイド プロジェクトとして移植する必要があるかもしれません。すべてを正常に移植して動作するまで、VC6 を破棄しないでください。

于 2009-05-27T14:00:06.190 に答える
1

維持する大規模なプログラムがない限り、そうです。今日切り替えてください!

ExpressバージョンのVC++は、Microsoftから無料でダウンロードできます。

于 2009-04-09T09:49:54.303 に答える
1

VC6 の弱点と一緒に暮らすことを学ぶことができます。最近では、ある種のレトロな魅力があります。私たちは何年もの間、いくつかのライブラリの「最後の VC6 リリース」を顧客に繰り返し提供してきました。バックポートとブランチの維持という余分な作業にお金を払う準備ができている顧客と議論するのは難しい. しかし、ある時点で、新しい VC で開発された新しい機能をバックポートするためのコストが、最後にアップグレードするコストを上回ります (特に、より多くのブーストと Intel TBB がコードベースの頭に忍び寄る場合)。または、少なくとも私はそれが起こることを願っています! 最悪の場合、不安定な C++0x サポートが登場したときに発生し、10 年間サポートを続けることになります...

于 2009-04-09T12:38:52.277 に答える
0

OSのアップデートは近いですか?アプリを Vista に移行する方法を調査したところ、Vista は VS 2005 より前のバージョン (VB 6 を除く) を公式にサポートしていないことがわかりました。また、VS 2005 で発生する可能性のある小さな問題のページが長いリストになっています。 . 私は、VS 2008 SP1 が利用可能になるまで (つまり、VS 2008 が実際に使用可能になるまで) 延期し、最初にコンパイラの切り替えを行うことをお勧めしました。

プロジェクトが、古い NT マシンでのみ実行する少数の顧客向けの特別なものである場合は、VS 6 のままにしておくことをお勧めします。何らかの一般消費向けに販売する場合は、Vista にする必要があります。ある時点で互換性があり (または 7 互換性など)、アップグレードする必要があります。

于 2009-04-09T14:01:46.913 に答える