1.3. Eclipse での C/C++ ソースコードの編集

Red Hat Enterprise Linux 6 は C/C++ 開発用の Eclipse プラグイン CDT を提供します。C/C++ ソースコード用の特別エディターやメイクファイル、GNU Autotools ファイルも含まれています。プログラムの実行およびデバッグの機能も利用できます。
Eclipse テキストエディターはカット、コピー、ペースト、ブロック選択 (Ctrl+Shift+A) といったテキストエディターに通常備わっているほとんどの機能をサポートします。また、選択先の移動 (Alt+Up/Down Arrow) といった比較的独特な機能もあります。
C/C++ プログラマーにとって特に興味深いのは、コンテンツアシスト 機能です。この機能はポップアップウィンドウで現行ファイル/場所で実行可能な関数、変数、テンプレートを提示します。これを起動するには、カーソルを希望の場所において、Ctrl+Space を押します。
ライブラリーからの関数呼び出しの詳細に関しては、libhover プラグイン」 を参照してください。
Eclipse C/C++ コードエディターにはエラーの強調表示およびリファクタリングもあります。
コードエラーや警告は、色付きの波型下線で示されます。このようなエラーや警告は、コードをエディターに入力する際、もしくはビルドが発生しコンパイラー出力がこのようなマークに変換されて表示される場合があります。
提供されるリファクタリングツールには、コード要素の名前を変更する機能があります。
詳細は 「Eclipse による C/C++ アプリケーションのデバッグ」 または 「Eclipse 用の Autotools プラグイン」 を参照するか、ヘルプコンテンツ内にある 『C/C++ Development User Guide』 でConceptsCoding aidsConceptsEditing C/C++ FilesTasksWrite code を参照してください。

1.3.1. libhover プラグイン

Eclipse 用の libhover プラグインは、GNU C ライブラリおよび GNU C++ 標準ライブラリにプラグアンドプレイのホバーヘルプサポートを提供します。これにより開発者は、ホバーヘルプ および code completion を使ってよりシームレスで便利な方法で Eclipse IDE 内で glibc および libstdc++ ライブラリに関する既存ドキュメントを参照できます。
C++ 言語

メンバー関数の入力補完のドキュメントは C++ に対応していません。ヘッダーファイルからのプロトタイプのみが提供されます。また、C++ メンバー関数では、ソースファイルにヘッダーファイルを追加する機能は対応していません。

C++ ライブラリーリソースでは、libhover は CDT インデクサーを使ってファイルの インデックス化 をする必要があります。インデックス化は、ビルドのコンテキストで対象ファイルを解析します。ビルドコンテキストは、ヘッダーファイルがどこから来るか、またタイプやマクロ、同様のアイテムがどのように解決されるかを決定します。libhover はヘッダーファイルの場所が分かっている場合もありますが、C++ ソースファイルのインデックス化ができるようになるには、通常実際のビルドが先に実行される必要があります。
C++ メンバー関数名はドキュメントの検索に十分な情報ではないので、libhover プラグインは C++ ソースのインデックス化を必要とする場合があります。C++ は、クラス内においても異なるクラスが同一名のメンバーを持つことを可能とし、メンバーは異なるメソッドシグネチャの同一名を持つ場合があります。これには、クラス名と関数のパラメーターの署名が提供されて正確にどのメンバーが参照されているかを判断する必要があります。
また、C++ にはタイプ定義とテンプレート化されたクラスもあります。この様な情報は、ファイル全体と関連の include ファイルの解析が必要になります。libhover はインデックス化によってのみ、これができます。
C 言語

C 関数では、入力補完 (Ctrl+Space) を実行することで、潜在的なソースに追加される C 関数の一覧が提供され (たとえば、prin と入力して Ctrl+Space を押すと入力補完候補の 1 つとしてprintf が一覧表示されます)、新たなウィンドウでドキュメントが表示され、厳密にどの C 関数が必要かを判断します。

Code Completion (入力候補) の使用

図1.21 Code Completion (入力候補) の使用

C 関数は名前だけでドキュメント内での参照が可能です。このため、libhover はホバーヘルプや code 入力候補を提供するために C ソースファイルをインデックス化する必要がありません。C ライブラリー関数用の適切なヘッダーファイルインクルードステートメントは、すでに存在していない場合は自動的に追加されます。
ファイル内で C 関数を選択し、右クリック > Source > Add Include と進んで、ソースに必要なヘッダーファイルを自動的に追加します。これは、Shift+Ctrl+N を押すことでも実行できます。

1.3.1.1. 設定および使用方法

すべてのインストール済み libhover ライブラリー用のホバーヘルプはデフォルトで有効となっており、プロジェクトごとに無効とすることができます。特定のプロジェクトごとにホバーヘルプを無効または有効にするには、プロジェクト名を右クリックして Properties をクリックします。表示されるメニューで C/C++ General > Documentation と進みます。Help books セクションのライブラリーにチェックを入れるか外すかして、そのライブラリーのホバーヘルプを有効/無効にします。
ホバーヘルプの有効/無効化

図1.22 ホバーヘルプの有効/無効化

複数の libhover ライブラリが機能上で重複している場合は特に、特定のライブラリのホバーヘルプを無効にすることをお勧めします。例えば、newlib C ライブラリのような C ライブラリ用の libhover プラグインが手動でインストールされたとします (newlib C ライブラリプラグインは Red Hat Enterprise Linux 6 で提供されていないことに注意してください)。ホバーヘルプには C 関数が含まれており、その名前が GNU C ライブラリ内のものと重複します (デフォルトで提供) 。これらのホバーヘルプの両方が同時にアクティブになるのはユーザーに好ましくないので、どちらかを無効にすることが実用的です。
複数の libhover ライブラリーが有効となっていてライブラリー間で関数の重複がある場合、Help books セクションで 最初に 一覧表示されているライブラリーからの関数のヘルプコンテンツがホバーヘルプに表示されます (つまり、図1.22「ホバーヘルプの有効/無効化」 では glibc がこれに当たります)。code 入力候補では、libhover が有効なすべての libhover ライブラリーから考えられるすべての代替案を提供します。
ホバーヘルプを使うには、 C/C++ Editor で関数名またはメンバー関数名の上にカーソルを持っていきます。2、3秒のうちに、libhover が選択した C 関数もしくは C++ メンバー関数に関するライブラリードキュメントが表示されます。
ホバーヘルプの使用

図1.23 ホバーヘルプの使用