2012-04-19 5 views
4

最近オープンソースのC++プロジェクトに貢献したいと思っていました。 C++での経験はほとんどありませんでしたが、Visual StudioをIDEとして選択し、SP1でアップデートしました。私は比較的簡単に構築するためのソリューションを得て、概要を得るために少しコードをナビゲートしたいと思っていました。「定義に移動」/「宣言に移動」はVS2010で確実に動作しませんか?

これは、「定義に移動」/「宣言に移動」がうまくいかないことに気付いたときです。どちらのオプションも、ソースコード内のシンボルを右クリックすると利用できますが、ヘッダファイルにあるときは、「定義に移動」を選択すると、関心のある関数についてのみ宣言に戻ります。 .ccファイルに入っているとき、私はいつも同じファイルの定義に移ります。

私はこれで懸念されている機能について気づいたいくつかのより多くのものがある:

1)一部の機能のために、私は、ヘッダファイルから定義にナビゲートすることができますが、他の方向は

が壊れています

2)宣言が定義に完全に一致するように変更された場合、一部の関数のナビゲーションを修正することができます。

header declaration: 
    void buche(sint64 betrag, player_cost type); 
source definition: 
    void karte_t::buche(sint64 const betrag, player_cost const type) 

header declaration: 
    void buche(sint64 const betrag, player_cost const type); 

に変更 - 両方向

3>ナビゲーション作品に)上部に、ソースファイル内の当該関数のコードブロックにスコープメニューをクリック右矢印(私が思うと思う前方宣言のシンボル)とクラス名(これらの関数は間違いなくクラスメンバです)を表示するのではなく、 "(グローバルスコープ)"に変更します

私は多くを検索しましたが、これは比較的よく知られている問題のようです。 How to get IntelliSense to reliably work in Visual Studio 2008

私はMicrosoftのフォーラムでいくつかのスレッドを見つけました(私は2つのハイパーリンクを投稿することしかできません)。しかし、バグや何かの正式な確認はありません。

私が見つけた回答の本質は、.ncbファイル(これはVS2010の.sdfデータベースに置き換えられています)を削除するか、ソリューションの読み込み時にデータベースを再構築するオプションを使用することです。私は何度も何度もやってしまいました。ここでStackoverflowのスレッドで最も高い評価を得ているのは、これが単にIntellisenseのバグであることを暗示しているようですが、これはコードナビゲーションを担当するオートコンプリートコンポーネントなのですか?代わりにVisual Assistを使用してください。しかし、問題はVS2008に関するものでした。別の返信は再帰的な参照を非難しましたが、私はすべてのファイル(確かに問題のチェックと遭遇したことはほとんどありません)がガードを含んでいるので、このプロジェクトでは問題ではないと思います。同じ問題を抱えていることも、そのプロジェクトのコーダーの一人によって私には確認されました。しかし、私はビジュアルアシストにお金を費やすことに熱心ではありません。それはちょっとした趣味であることを意味しています...

Eclipse/Javaで多くの経験をしていますが、 IDEの機能が確実に動作しません。もちろん、私は静的なコードの分析がC++の方がJavaの方がはるかに難しいことを理解することができます。しかし、再びVisual Studioは、多くの開発サイクルを経た商用製品です。

この投稿を合計すると、これは避けられないバグですか?

+0

投稿記事:IntellisenseをVS 2008で確実に動作させるにはどうすればうまくいったのですか?私はVSソリューションを閉じ、ソリューションのSDFファイルを削除し、ソリューションを再オープンし、ソリューションを再構築して、ボイラーを再構築しました。 – John

答えて

1

私はそれがあなたがやむを得ないと考えていることに依存していると思います。

私の経験では、Intellisenseの問題は、主にテンプレート、マクロ、またはその両方によって発生しているようです。

Intellisenseが使用するパーサ/プリプロセッサは、コンパイラと同じように動作しないようで、場合によっては情報が不足していると誤った仮定をしていることがあります。

Intellisenseが壊れていて、突然複雑なテンプレートクラス(他のテンプレートクラスを使用するクラス、または別のテンプレートクラス、あるいは何か変わったもの)を追加したことに気づいた場合は、またはマクロ(特に複雑なもの)であっても、それが原因であると通常想定することができます。 多くの場合、コードを並べ替えるか、少し単純化するかランダムに変更するだけで、Intellisenseを回復することができます(.sdfファイルを削除した後でさえも)。

これはむしろ不便ですが、それを壊してしまったライブラリの場合は悪いです。いくつかのBoostライブラリは、特にそれをかなり頻繁に壊す傾向があります。このような場合は、避ける方がはるかに難しいです。

とにかく、Intellisenseはやや着実に改善しています。 VS2010はVS2008よりはるかに正確で安定しており、VS2012はVS2010よりも優れているようです(私はあまり使用していませんが)。

実際、VS2010に特に依存していない場合は、VS2012に更新するだけです。

+0

返信いただきありがとうございます。 VS2012に試してみましょう。 –

関連する問題