2011-07-18 13 views
3

何らかの理由で、私が実行しているEclipse CDTのコード補完が(Ubuntu Linuxで)正しく動作していません。私が図書館を含むたびに何もポップアップしない。これがなぜあるのか何か理由はありますか?Eclipse CDTコード完了問題

答えて

5

ソースコードにヘッダーを含めるだけでは不十分です。インデクサにヘッダを探す場所を伝える必要があります。これを行うには、プロジェクトのプロパティに移動し、C/C++ General > Paths and Symbolsアイテムに移動する必要があります。 Includesタブで、GNU C++言語のヘッダーが格納されているフォルダを追加します。ライブラリに必要な場合は、Symbolsタブにいくつかのシンボルを定義する必要があります。

インデクサーがそれをするのを待つだけで、自動補完が機能するはずです。インデクサーは完全ではなく、STLのような複雑なC++ヘッダーはかなり簡単に混乱する可能性があることに注意してください。

+0

ありがとうございました。完了し、完了しました。 シンボルを定義する限り、私はJavaから来ているので、それについてはあまりよく分かりません。新しいシンボルを定義するために正確に必要なものは何ですか? – zeboidlund

+0

あなたはおそらくそれを必要としませんが、いくつかのヘッダは[preprocessor directives](http://en.wikipedia.org/wiki/C_preprocessor)に基づいてその実装を変更することができます。たとえば、ヘッダーに '#ifdef FOOBAR'ディレクティブがあり、インデクサーがそれに相当する' #define FOOBAR'ディレクティブを見つけなかった場合、 '#ifdef'セクションに含まれるものはインデックスに登録されません。今までにこれを頻繁に行う必要はありません(おそらくそれを述べるべきではないでしょう)。 –

+0

これはC++プロジェクトには効果的ですが、ネイティブライブラリにC/C++を含むAndroidプロジェクトはどうでしょうか? –

0

ヘッダーが見つからない可能性があります。プロジェクトのツール設定のインクルードセクションにインクルードパスを指定する必要があります。他の方法では、gccがそれらを見つけることができたとしても、eclipseがヘッダーを見つけられない可能性があります。