0

通常、私はC#でプログラミングしますが、C++でいくつかの作業を行うことを余儀なくされています。Visual Studio(2008)との統合は、C#に比べて非常に貧弱なようですが、状況を改善できる優れたツール、プラグイン、または構成があるかどうか疑問に思いました。

別の投稿は、プログラムVisual Assist Xを指摘しました。これは、少なくともリファクタリングなどのいくつかのことに役立ちます(私にとっては少し高価ですが)。しかし、私の主な問題は、コンパイルエラーでは何が間違っているのかについてほとんど手がかりが得られず、ほとんどの時間を自分が何を間違えたかを理解することに費やしていることです。VSが箱から出して行うよりもはるかに多くのエラーを静的にチェックする可能性があるように感じます。そして、なぜそれはC#のように青い下線を提供しないのですか、それはそれほど難しいことではありませんか?!

問題の半分は、私がC ++を初めて使用するという事実にすぎないことを認識していますが、プログラムをコンパイルするのが不当に難しい場合があると実感しています。この種のツールはありますか、それとも私の要求が高すぎますか?

4

3 に答える 3

7

2 つの可能性があると思います: 1) 知識を超えた C++ のことを試している (その結果、何が間違っていたのか、エラー メッセージを解釈する方法がわからない)、2) レベルが高すぎる。期待。

ヒント: その後のエラーの多くは、最初のエラーが原因です。エラーのリストが膨大になると、通常は最初のエラーだけを修正して再コンパイルします。デリミタや型宣言の欠落が (エラー メッセージに関して) どれだけのゴミを生成するかに驚かれることでしょう :)

コンパイル前に C++ プログラムを構文解析することは、主に次の 2 つの理由から困難です。1) C++ の文法はコンテキスト依存である、2) テンプレートはチューリング完全である (変な構文を持つ関数型プログラミング言語と考えてください)。

于 2008-10-02T17:08:03.140 に答える
4

私の提案:

  • C# で得られるような機能がさらに必要な場合は、VisualAssist Xを入手して、その使用方法を学んでください。無料ではありませんが、多くの時間を節約できます。
  • 警告レベルを高く設定します(これにより、最初はより多くのコンパイル エラーが生成されますが、それらを修正するにつれて、よくある間違いの感覚がつかめるようになります)。
  • 警告を無視する習慣を身につけないように、警告をエラーとして設定します。
  • コンパイル エラーを理解するには、Google を使用して (ヘルプ システムで時間を無駄にしないでください)、警告エラー番号 (次のようになります: C4127) を検索します。
  • 上記の方法を使用してエラーなしでコードをコンパイルできるようになるまで、テンプレートは避けてください。テンプレートがよくわからない場合は、勉強してください。いくつかの本を入手し、いくつかのチュートリアルを実行して、小さなことから始めてください。テンプレートのコンパイル エラーは、把握するのが難しいことで有名です。Visual C++ 2008 のエラー メッセージは、以前のバージョンよりもはるかに優れていますが、それでも難しいです。
  • テンプレートの作成を本格的に開始する場合は、詳細なエラーを読みやすくするために、ワイド スクリーン モニター (2 つでもよい) を用意してください。
于 2008-10-02T18:44:29.150 に答える
3

Visual Assistの場合は+1ですが、今はそうではないかもしれませんが、趣味を職業に変えるときは、それが必要になります。

私の経験では、診断はVC6よりもはるかに優れていますが、IDEの学習の一環として、診断の真の意味を「学習」する必要があります。

C ++の静的チェックは、ビルドモードと非常に複雑な言語のため、C#よりもはるかに複雑です。PC-Lint ( IDEに統合するためにVisual Lintと組み合わせるのが最適)は、標準的な静的分析です。でも安くはない...

C ++標準は時々聖書のように読まれますが、それを解釈するための訓練された説教者がいません。優れた通訳の1人は、C++FAQを持ったMarshalClineです。オンラインFAQは広範囲に渡っていますが、本よりもはるかに少ないことに注意してください。

複雑なエラーメッセージを理解するのに役立ったのは、より小さな環境で問題を再現しようとしていることです。しかし、当時はインターネットがありませんでした...

于 2008-10-26T21:12:43.017 に答える