最近、Eclipse 3.6 から Eclipse 3.7 に変更しました。これは、Ubuntu 11.04 での C++ 開発に使用しています。
バージョン 3.6 では大きな問題はありませんでしたが、常にインデクサーに問題がありました。バージョン 3.7 では、未解決のタイプをエラーとしてマークし始めます。インデクサーが私をさらに嫌っているように見えるので、私の Eclipse はどうやら や などの型を認識していないようuint16_t
ですsize_t
。
コード エディターに表示されるエラーとは対照的に、私のコンパイラはコードのコンパイルとすべてのシンボルと型の解決に問題がないため、これは IDE 自体の問題のようです。
すべての赤い下線が私のコードをますます読めなくするため、この動作を回避する方法はありますか?
アップデート:
さて、いくつかの調査とデニスからの回答で、いくつかのパスを追加する必要があることがわかりました
Project Properties/ C/C++ General/ Paths and Symbols
I32 ターゲットではなく PowerPC 用にビルドしているので、単に追加することはできません/usr/include
。代わりに、追加する必要がありました
/usr/powerpc-linux-gnu/libc/usr/include
すべての標準ヘッダー ( などstdint.h
)。また、必要なもの:
/usr/lib/gcc/powerpc-linux-gnu/4.5.1/include
のためにstdarg.h
。
これで、ほとんどすべてのエラーがなくなりました。まだ私を悩ませている唯一の機能はprintf
、ヘッダーからのものstdio.h
です。調べたところ、ヘッダー ファイル自体はインクルード パス内にあります。それでも、というエラーが表示されますFunction printf could not be resolved
。繰り返しますが、これらは Eclipse によって表示される単なるエラーであることに注意してください。コンパイル自体は正常に動作します。
したがって、これは実際には3つの質問を投げかけます:
プロジェクトのプロパティでは、
Paths and Symbols
セクションはセクション外のインクルード パスと一致しC++ Build/Settings/C++ Includes
ます。これは、これらのセクションの 1 つでパスを追加/削除すると、他のセクションのエントリに直接影響することを意味します。コンパイラとC++ Includes
直接結合しているため、コンパイラがパスとして渡されていない場合でも、コンパイラが正しくコンパイルできる(そしてヘッダーを見つける)のはなぜだろうか?私が知らないGCCが使用する標準パスのようなものはありますか?なぜ彼
printf
は日食で見つからないのですか? ヘッダーファイルstdio.h
が含まれており、宣言も含まれていますprintf
-では、なぜEclipseコードエディターはそれを解決できないと私に言うのですか?なぜヘッダファイルはそんなに分割されているのですか? 別のターゲット (PowerPC など) 用にビルドする場合、別のヘッダー ファイルが必要であることは認識していますが、なぜ GNU GCC はこれらのヘッダーを別のディレクトリに分けるのでしょうか?