最近オープンソースの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は、多くの開発サイクルを経た商用製品です。
この投稿を合計すると、これは避けられないバグですか?
投稿記事:IntellisenseをVS 2008で確実に動作させるにはどうすればうまくいったのですか?私はVSソリューションを閉じ、ソリューションのSDFファイルを削除し、ソリューションを再オープンし、ソリューションを再構築して、ボイラーを再構築しました。 – John