インデクサーがうまく動いていない

 EclipseではEnumとか#defineとか関数とかの宣言部分を参照する機能があるみたいです。
例:
func_関数A();
 
 上記のように、func_関数Aという関数をプログラム中で使用しているとします。このとき、「func_関数A」という文字列にマウスカーソルを合わせ、CTRLキーを押しながらクリックすると、関数の宣言部分にジャンプすることができます。
void func_関数A(){
        printf("関数Aを呼びだしたよ\n");
    }
 
 ↑こんなふう
 こういう宣言へのジャンプ機能をインデクサー(Indexを紐付けするから?)ていうみたいです。

 ……ところが、めためた開発を進めていると、このCTRLジャンプ機能が使えなくなったりすることがあります。理由はいろいろあるみたいですが、、、
  • スペルミス
 ありがちですが、スペルミスしてると宣言部へジャンプできません。
  • コードが長すぎる
 PCのスペックやEclipseのバージョンによって異なるかもしれませんが、あんまりにもコードが長大だとジャンプ機能が機能しなくなるようです(いちおうEclipseはその旨を警告してくれます)。マイPCの場合、256MBのメモリ、EclipseのVerがガリレオで、1ファイル2500stepをこえたあたりでジャンプできなくなりました。分割せいや……って話ですけど……(それよりメモリw)。
  • ヘッダが新しくなった
 フツーに開発してると、この例が一番多いんじゃないでしょうか。同一のワークスペース内に複数プロジェクトがあり、プロジェクト内のファイルが互いに関連している場合にありがちです。

header.h <- プロジェクトAで作ってる
typedef enum EExampleIndex{
        ExampleIndex_Invalid =-1, /* 無効値 */
        ExampleIndex_Apple   = 0, /* りんご */
        ExampleIndex_Max        , /* 最大値 */
    } EExIndex;
 
test.cpp <- プロジェクトBで作ってる
#include "header.h"
    EExIndex index = ExampleIndex_Apple;
 
 このときheader.hに、新しいExampleIndex_Bananaを追加します。

header.h <- プロジェクトAで作ってる
typedef enum EExampleIndex{
        ExampleIndex_Invalid =-1, /* 無効値   */
        ExampleIndex_Apple   = 0, /* りんご   */
        ExampleIndex_Banana     , /* よしもと */
        ExampleIndex_Max        , /* 最大値   */
    } EExIndex;
 
 で、test.cpp内でさっそくExampleIndex_Bananaを使ってみます。

test.cpp <- プロジェクトBで作ってる
#include "header.h"
    EExIndex index  = ExampleIndex_Apple;
    EExIndex index2 = ExampleIndex_Banana;
 
 で、ExampleIndex_Bananaの上にカーソルをあわせてCTRLジャンプを使おうとすると、インデクサーが見つからない的な警告がすみっちょに表示されます。あるある……。そういうときは、プロジェクト・ビューのツリー上(この場合プロジェクトB)で右クリックし、
 インデクサー > 再ビルド
 してみましょう。たぶんなんとかなります。
最終更新:2012年11月21日 21:55