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』 で と 、 を参照してください。
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 関数が必要かを判断します。
図1.21 Code Completion (入力候補) の使用
C 関数は名前だけでドキュメント内での参照が可能です。このため、
libhover
はホバーヘルプや code 入力候補を提供するために C ソースファイルをインデックス化する必要がありません。C ライブラリー関数用の適切なヘッダーファイルインクルードステートメントは、すでに存在していない場合は自動的に追加されます。
ファイル内で C 関数を選択し、
> > と進んで、ソースに必要なヘッダーファイルを自動的に追加します。これは、Shift+Ctrl+N を押すことでも実行できます。
1.3.1.1. 設定および使用方法
すべてのインストール済み
libhover
ライブラリー用のホバーヘルプはデフォルトで有効となっており、プロジェクトごとに無効とすることができます。特定のプロジェクトごとにホバーヘルプを無効または有効にするには、プロジェクト名を右クリックして をクリックします。表示されるメニューで > と進みます。 セクションのライブラリーにチェックを入れるか外すかして、そのライブラリーのホバーヘルプを有効/無効にします。
図1.22 ホバーヘルプの有効/無効化
複数の
libhover
ライブラリが機能上で重複している場合は特に、特定のライブラリのホバーヘルプを無効にすることをお勧めします。例えば、newlib
C ライブラリのような C ライブラリ用の libhover
プラグインが手動でインストールされたとします (newlib
C ライブラリプラグインは Red Hat Enterprise Linux 6 で提供されていないことに注意してください)。ホバーヘルプには C 関数が含まれており、その名前が GNU C ライブラリ内のものと重複します (デフォルトで提供) 。これらのホバーヘルプの両方が同時にアクティブになるのはユーザーに好ましくないので、どちらかを無効にすることが実用的です。
複数の
libhover
ライブラリーが有効となっていてライブラリー間で関数の重複がある場合、 セクションで 最初に 一覧表示されているライブラリーからの関数のヘルプコンテンツがホバーヘルプに表示されます (つまり、図1.22「ホバーヘルプの有効/無効化」 では glibc
がこれに当たります)。code 入力候補では、libhover
が有効なすべての libhover
ライブラリーから考えられるすべての代替案を提供します。
ホバーヘルプを使うには、
で関数名またはメンバー関数名の上にカーソルを持っていきます。2、3秒のうちに、libhover
が選択した C 関数もしくは C++ メンバー関数に関するライブラリードキュメントが表示されます。
図1.23 ホバーヘルプの使用