4

迷惑な問題を示すコードを次に示します。

class A {
public:
    A():
        m_b(1),
        m_a(2)
        {}
private:
    int m_a;
    int m_b;
};

これは、コンソールビューでの出力です。

make all 
Building file: ../test.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"test.d" -MT"test.d" -o"test.o" "../test.cpp"
../test.cpp: In constructor 'A::A()':
../test.cpp:9: warning: 'A::m_b' will be initialized after
../test.cpp:8: warning:   'int A::m_a'
../test.cpp:3: warning:   when initialized here
Finished building: ../test.cpp

問題は、[問題] ビューに 3 つの個別の警告 (警告ワードを含む出力の行) が表示されることですが、実際には 1 つの問題を説明する出力に 4 行あります。

足りないものはありますか?

追加の質問。多分それはEclipseの精神にありますが、ほとんどのIDE(Visual Studio、emacsなど)のようにコンソールビューをクリック可能にする方法はありますか.

ありがとうディマ

4

5 に答える 5

6

各行は異なるコード行を参照しているため、警告には複数の行があります。警告されている問題は、9 行目で宣言されている に何が起こっているかということです。これは、8 行目が前に宣言されているためですが、 3 行目から始まる初期化子リストで何が起こっているかによって引き起こされます。m_bm_am_b

gcc では、相互に関係のない警告が次々に表示される可能性があります (つまり、関連のない一連の警告がすべて間違っていますmain)。そのため、Eclipse は出力から、それらが個別の警告なのか、すべて関連する警告なのかを判断できません。同じ問題に。

于 2009-08-02T13:44:41.060 に答える
1

このバグ レポートの最後のコメントによると、コンソール ビューをクリックして CDT 7.0 のコードにジャンプできるはずです。

マイルストーン ビルドを調べて、エラー メッセージのグループ化が改善されているかどうかを確認することをお勧めします。関連するメッセージをグループ化するためにバグを発生させない場合は、良い考えです。

于 2010-02-28T18:38:28.730 に答える
0

CDT がまだ少し未熟であり、おそらく g++ の出力を最適な方法で解析できないためだと思います。行../test.cpp: In constructor 'A::A()':に行番号が含まれていないため、CDT はtest.cppエディターにエラー マーカーを配置できず、おそらくこの問題は [問題]ビューに影響します。

問題ビューにはさらに問題があります。たとえば、ビューから目に見えるエラーのみを削除できるため、デフォルトの 100 項目を超える場合は、100 ずつ順番に削除する必要があります。また、独立したヘッダー ファイル内でエラーが発生した場合、エラーはクリーン後に自動的に削除されません。彼らはリリースごとに CDT を改善しています。

追加の質問 - 「コンソール ビューをクリック可能にする」とはどういう意味ですか?

于 2010-03-01T23:45:24.173 に答える
0

フィールドは、クラスで宣言された順序で初期化されます。コンパイラーは、コンストラクターが間違った順序で初期化していることを伝えることで、あなたを助けています。初期化の順序が重要な場合、これにより奇妙なエラーが発生する可能性があります。

于 2009-11-03T10:18:23.427 に答える
0

David さん、ありがとうございます。私は、Eclipse の「問題」ビューがデフォルトでコンパイラー・エラーをアルファベット順にソートするという事実に言及していました。Dima が言っていたように、これにより、次のような 2 行にまたがる gcc エラー メッセージで問題が発生します。

  1. エラー: 「そのようなもの」は保護されています
  2. この文脈の中で

すべての「このコンテキスト内」の行は、参照している変数から分離されるためです。

ただし、コンパイラエラーの並べ替え順序を変更するオプションを見つけました。ビューの上部にある小さな下向きの三角形です(これは、私がEclipseを初めて使用するため、ビューのオプションを設定する場所であることがわかりました)。 . これをいじってみると役に立ちますが、それでも同じファイル内のエラーがごちゃ混ぜになるのを止めることはできません (エラーをそのままにしておくオプションがないのはなぜですか?)

于 2009-11-03T12:02:57.413 に答える