Eclipse CDT で「構文エラー」と表示されるのにコンパイルに問題がないのはなぜですか

Eclipse CDT には、コードを分析してインデックスを作成するための独自のプリプロセッサ/パーサーが含まれています。ただし、ビルド CDT を呼び出すと、gcc などのシステム コンパイラが呼び出されます。 CDT パーサーで受け入れられる構文とコンパイラで受け入れられる構文の間には、わずかな違いがある場合があります。これが発生すると、CDT パーサーが混乱する可能性があります。

私のシステムでは offsetof マクロは、__offsetof__ を使用する式に展開されます キーワード。このキーワードは CDT によって認識されないため、構文エラーが発生します。この問題に対処するために、CDT パーサーには __offsetof__ を処理するマクロが組み込まれています。 これは次のようになります:

#define __offsetof__(x) (x)

これは正しくないようです。少なくとも私のシステムでは、結果として __offsetof__ が削除されます。 まだ構文エラーにつながるソースからのキーワード。

Paths and Symbols プロパティ ページに移動し、__offsetof__ のマクロを追加することで、構文エラーを取り除くことができました。 これは「foo」にマップされます。これにより、構文エラーではなく、これまでに見たことのない関数の呼び出しであるとパーサーに認識させます。

別の方法として、[ウィンドウ]> [設定]> [一般]> [エディタ]> [テキスト エディタ]> [注釈] に移動し、C/C++ インデクサー マーカーのすべてのチェックボックスをオフにして、エディターで構文エラー レポートをオフにすることもできます。


Preferences->C/C++->Language Mappings :AddContent Type :C-headerLanguage :C++ で Eclipse CDT の問題を修正しました


コードはエラーなしでコンパイルされますが、Eclipse CDT のリアルタイム コード アナライザーが C/C++ ファイルにいくつかのエラーを表示することがあります (たとえば、'関数 xxx を解決できませんでした)。これは、Eclipse CDT が MinGW のもの (または他の GNU コンパイラー) ではなく、独自のプリプロセッサー/パーサーを使用してコードを分析し、インデックスを作成するためです。ワークスペース内のすべての eclipse プロジェクトに対してこれをグローバルに修正するには、次の手順に従います:(特定のプロジェクトに対してのみこれを修正するには、メニュー 'Project->Preferences の手順 1、2、および 4 に従います。> ')

1-メニュー 'ウィンドウ->設定->C/C++->言語マッピング '、以下に示すように正しいマッピングを追加します:(例:コンテンツ タイプの場合:C++ ソース/ヘッダー ファイル、GNU C++ 言語の使用など)

2-メニュー内 'ウィンドウ->設定->C/C++->インデクサー '、以下に示すように、すべてのチェックボックスをオンにして完全なインデックス作成を設定します (ただし、[スキップ] チェックボックスはオフにしません)。

3-各プロジェクトの特定のプロパティで、メニュー「Project->Properties->C/C++ general->Indexer」 ', 以下に示すように、[プロジェクト固有の設定を有効にする] のチェックを外します。

4-インデックスを再構築、メニュー「プロジェクト->C/C++ インデックス->再構築」 '.