11

Eclipse Indigo(Galileoから提供)を使い始めたばかりですが、size_tを使用するたびに、ガターに小さな赤いバグが発生します。

ここに画像の説明を入力してください

コードは問題なくコンパイルされますが、インクルードディレクトリへのパスを明示的に追加する必要があると思います。私はすでにそこにいつもの容疑者がいます。私はGnuツールチェーンを使用してColdFireプロセッサ用にクロスコンパイルしているので、チップの製造からの標準インクルードに加えて、m68k-elfの下にインクルードがあります

\include  
\include\c++\4.2.1
\include\c++\4.2.1\include
\include\c++\4.2.1\m68k-elf

アップデート

このツールチェーンにstddef.hが存在するのはlibディレクトリ内だけであることに気付きました

gcc-m68k\lib\gcc\m68k-elf\4.2.1\include

そのパス、親パス、および親\include-fixedからのパスを追加しましたが、問題はまだ存在します。

テストに関する注意

何が機能し、何が機能しないかをテストするとき、私はいくつかのことに気づきました

  1. コード分​​析の設定を変更してもコード分析は再トリガーされませんが、エディターを変更する必要があります(スペースを追加するだけで機能します)
  2. のコード分析設定をオフにしてSymbol is not resolvedも、エラーは解消されません。
  3. すべてSyntax and Semantic Errorsをオフにし、分析をトリガーし、戻ってすべてをオンに戻し、次にオフにするとSymbol is not resolved、エラーが再発するのを防ぎます。
4

5 に答える 5

3

[設定]->[C/C++]->[インデクサー]でインデクサーの設定を確認します。

そこには「事前にインデックスを作成するために提出」というフィールドがあります。その内容は次のようになります。

cstdarg, stdarg.h, stddef.h, sys/resource.h, ctime, sys/types.h, signal.h, cstdio

そこに何か他のものがある場合は、それを上記に置き換えてみてから、インデックスを再構築して、問題が解決するかどうかを確認してください。

(特に、そのフィールドにあるものがである場合、stdarg.h, stddef.h, sys/types.h何がうまくいかなかったかについてはかなり推測できます。EclipseGanymedeに戻ると、このフィールドの値はでしたstdarg.h, stddef.h, sys/types.h。新しいバージョン(GalileoおよびIndigo)では、変更されました。ただし、このフィールドは「設定」の一部であるため、ガニメデの設定をエクスポートしてガリレオ/インディゴにインポートすると、このフィールドは古いガニメデの値で上書きされます。しばらく前にこれに焼かれました。)

于 2012-04-10T20:06:11.207 に答える
2

確実に取得するには、ヘッダーsize_tが必要です。次に、またはを入れない限り、それはになります。#include<cstddef>std::size_tusing namespace stdusing std::size_t

于 2012-04-10T19:43:48.047 に答える
1

ツールチェーンがデフォルトのインクルードパスとシンボルのみを使用してコードをコンパイルできる場合は、それらを使用するようにEclipseを設定するだけで十分です。プロジェクトのプロパティに移動しC/C++ Build -> Discovery Options、言語ごとに、をCompiler invocation commandネイティブコンパイラ(例g++)からクロスコンパイラ(例:C:\nburn\gcc-m68k\bin\g++?)に変更します。次に、次のビルドで、自動検出が実行され、プロジェクトに表示されるいわゆる「組み込み」パスとシンボルがC/C++ General -> Paths and Symbols、コンパイラが報告したものに更新されます。再度インデックスを作成して、警告を確認できます。古い「ビルトイン」はなくなったからです。

于 2012-11-23T07:29:48.153 に答える
1

この問題にぶつかり、同じ問題にぶつかる2つのスタックオーバーフローの質問を明らかにした検索の結果、実際に調査するのに十分な煩わしさを感じた後、どのように修正したかを提出することにしました。

私はFedoraを実行していますが、迷惑なことに、/ usr / include /linux....にstddef.hファイルがあります。これは実際には空です。したがって、インクルードパスにコンパイラのstddef.hが含まれていても、インデクサーは実際にはこの他の空のファイルを解析していました。したがって、必要なことは次のとおりです。

パスとシンボルリストの前にコンパイラ固有のインクルードパス(私の場合は/usr/lib/gcc/x86_64-redhat-linux/4.7.2/include/)を付けて、他の空のstddef.hが解析されないようにします。

于 2013-06-24T17:41:33.260 に答える
0

私は実際に同じ問題を抱えていました。この問題は、fquinnerの投稿で説明されているものと同じように見え、にあるstddef.h/usr/include/linux/stddef.hも空でした。不思議なことに、正しいものstddef.hは日食によって発見され、問題なく開くことができました。

私のようにEclipseでインデックスを修正する必要がある場合(たとえば、とにかく別のビルドツールでビルドする場合)、このインデックスの問題は、期待されるタイプに定義することで回避でき__SIZE_TYPE__ます。long unsigned intC/C++ General -> Paths and Symbols

于 2017-06-07T10:05:16.227 に答える