10

Eclipse C++ で問題が発生しています。私のプロジェクトはコンパイルおよび実行されますが、Eclipse (juno) は何千ものエラーがあると言い続けます。たとえば、私のコードには関数 SetRun があり、Eclipse はこのエラーに言及しています。

Eclipseが関数のタイプを理解していないようで、「?」代わりは。

また、「シンボル '*' を解決できませんでした」などのエラーも多数あります。

これはすべて同じ問題の一部だと思います。

Eclipse がこれらのエラーについて教えてくれないようにするにはどうすればよいですか?

4

5 に答える 5

6

提案された解決策を試しましたが、うまくいきませんでした。助けになったのは、プロジェクトの CodeAnalysis をオフにすることでした。Properties->C/C++ General->Code analysis に行きました。Use Project Settings を選択し、すべてのエラーをオフにしました。もちろん、これは非常に迷惑で残念なことであり、いつ適切に修正されるかを知りたいと思います. 他のまともな IDE が持っている機能を利用できないのは残念です。

于 2012-11-29T07:51:01.443 に答える
3

実際、Eclipse はある種の不安定なプロジェクトです。プロジェクトのクリーンアップとリフレッシュを試みます。

于 2012-07-06T01:08:32.487 に答える
2

エクリプスでは:

  • プロジェクトを右クリックし、
  • プロパティをクリック
  • 矢印をクリックして、左側のツリー ビューの項目「C/C++ general」を展開します (項目自体をクリックするだけでは、サブオプションは展開されません)。
  • サブオプションから「プリプロセッサ インクルード パス、マクロなど」を選択します。
  • 「プロバイダ」タブをクリックし、「CDT GCC ビルトイン コンパイラ設定 [共有]」の横にあるチェックボックスをオンにします。
于 2014-06-18T16:37:36.827 に答える
1

いくつかの機能でも同じ問題がありました。いくつかの typedef の後、引数は定義されていない (標準ではない) __int64 であることが判明しました。プロジェクトで定義するだけで済み、これで問題は解決しました。

プロジェクト -> プロパティ -> C/C++ 一般 -> パスとシンボル -> シンボル -> C++ ソース ファイル -> 追加

名前: __int64

値: ロング ロング

(または、「long long」の代わりに、この回答の値のいずれかを使用できます)

編集:

ちなみに、Eclipse bugzilla でこの問題に関するバグ レポートを見たので、__int64 を定義する必要は今後なくなるかもしれません。

于 2013-10-30T15:24:15.087 に答える
1

CODAN を Mac 向けのコードで実行しようとしたときに、これらのエラーがたくさん発生しました。私のMac SDKライブラリは、この質問のようにシンボリックリンクを介して含まれていました(ただし、すべてではありません-お楽しみに!)最終的に、すべてのヘッダーが含まれていないことが判明しました。たとえば、次の関数呼び出しがありました。

IORegistryEntryGetParentEntry(service, kIOServicePlane, &parent);

エラーが発生していた:

Invalid arguments 'Candidates are: ? IORegistryEntryGetParentEntry(?,?,?)'

IOKit/IOKitLib.hさて、 (私が持っていた)で定義された関数の正しい署名は次のとおりです。

kern_return_t IORegistryEntryGetParentEntry(
    io_registry_entry_t     entry,
    const io_name_t         plane,
    io_registry_entry_t    *parent );

ここで、最初の引数を取り、型定義をトレースすると、次のようになります。

typedef io_object_t         io_registry_entry_t; (in IOKit/IOTypes.h)
typedef mach_port_t         io_object_t; (in IOKit/IOTypes.h)
typedef mach_port_name_t    mach_port_t; (in mach/port.h)
typedef natural_t           mach_port_name_t; (in mach/port.h)

その後!を定義したインクルードがありませんでした__darwin_natural_t。このインクルードは実際には にi386あり、シンボリック リンク ディレクトリにはありませんでした。それを追加すると、チェーンが完成しました。

typedef __darwin_natural_t  natural_t; (in i386/vm_types.h)
typedef unsigned int        __darwin_natural_t; (in i386/_types.h)

最後に、CODAN は の型引数 1 が何であるべきかIORegistryEntryGetParentEntry()を認識し、エラーは次のように変わりました。

Invalid arguments 'Candidates are: kern_return_t IORegistryEntryGetParentEntry(io_registry_entry_t ,?,io_registry_entry_t*)'

他の引数についてもこの「型トレース」を繰り返したところ、エラーが消えたことがわかりました (インデックスを再構築する必要さえありませんでしたが、YMMV でした)。もちろん、必要なヘッダーを見つける必要があり、それらが含まれていることを確認する必要があります-上記は単なる例です!

于 2013-10-25T17:32:37.347 に答える