2

Ubuntu の Eclipse indigo で CDT インデクサー 8.0.2 を使用して、C/C++ ソース ファイル内のすべての #ifdef および #else ブロックのインデックスを作成したいと考えています。

#else ブロックをカバーしないため、シンボルの追加は機能しません

Eclipse CDT に #ifdef および #else ブロックを単純に無視させる方法はありますか? 他のインデクサーと同様 ( emacs cscope など)

私は何日も探していましたが、良い解決策が見つかりませんでした。

私は非常に大量のコードを持っているので、それを編集して #ifdefs を一時的にでも削除しない方がよいでしょう。

4

1 に答える 1

0

短い答えはノーです。CDT プリプロセッサはそのようには機能しません。これは正しいセマンティクスに従います。つまり、#ifdef の 1 つのブランチのみを解析します。Emacs は各ブランチに入る可能性がありますが、CDT ほど正確または完全な分析を行っていません。

唯一のオプションは、各ブランチを解析するように構成された複数のビルド構成をセットアップすることです。その後、別のブランチで作業したいときにビルド構成を切り替えることができます。ただし、セットアップに時間がかかる可能性があり、切り替えるたびに再インデックスがトリガーされるため、これは理想とはほど遠い. (また、再インデックスを行うように構成する必要があります。[ウィンドウ] > [設定] > [C/C++] > [インデクサー] に移動し、[アクティブなビルド構成を使用] を選択します)

CDT パーサーは、アウトライン ビューに表示する宣言を見つけるためだけに、非アクティブな #else ブランチの内部を解析することに注意してください。

于 2012-08-29T19:52:31.407 に答える