7

最近、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つの質問を投げかけます:

  1. プロジェクトのプロパティでは、Paths and Symbolsセクションはセクション外のインクルード パスと一致しC++ Build/Settings/C++ Includesます。これは、これらのセクションの 1 つでパスを追加/削除すると、他のセクションのエントリに直接影響することを意味します。コンパイラとC++ Includes直接結合しているため、コンパイラがパスとして渡されていない場合でも、コンパイラが正しくコンパイルできる(そしてヘッダーを見つける)のはなぜだろうか?私が知らないGCCが使用する標準パスのようなものはありますか?

  2. なぜ彼printfは日食で見つからないのですか? ヘッダーファイルstdio.hが含まれており、宣言も含まれていますprintf-では、なぜEclipseコードエディターはそれを解決できないと私に言うのですか?

  3. なぜヘッダファイルはそんなに分割されているのですか? 別のターゲット (PowerPC など) 用にビルドする場合、別のヘッダー ファイルが必要であることは認識していますが、なぜ GNU GCC はこれらのヘッダーを別のディレクトリに分けるのでしょうか?

4

3 に答える 3

3

一般的なタイプの赤い下線は通常、インクルード パスに標準ライブラリがないことが原因です。プロジェクトのインクルードを見てください...それらはプロジェクトのプロパティにあります。C++ インクルードに、使用しているコンパイラの C++ 標準 libs フォルダーと一致するエントリがあることを確認してください。

于 2012-07-10T13:19:36.040 に答える
0

Eclipse (Mars.1 Release 4.5.1、ビルド ID: 20150924-1200) と ARM コンパイラ (arm-none-eabi、4.4.1) を使用しています。私はあなたとまったく同じ問題を抱えていました。私の以前のパスは次のとおりです。

D:\test\CodeSourcery\Sourcery G++ Lite\lib\gcc\arm-none-eabi\4.4.1\include

次に、コンパイラ ディレクトリで別のインクルード ディレクトリ (接尾辞: 'fixed') を発見しました。

D:\test\CodeSourcery\Sourcery G++ Lite\lib\gcc\arm-none-eabi\4.4.1\include-fixed

これにより、型の誤検出 (uint16_t など) に関するすべてのエラーが修正されました。

于 2016-04-14T16:08:29.157 に答える