2012-01-16 4 views
3

gccを使用している場合、ヘッダファイルの定義を見つけるための推奨方法はありますか? MSVCを使用する場合は、右クリックして「Go to definition」を選択してください。本当にいいです。gccを使用しているときにヘッダファイルの定義を見つける良い方法はありますか?

私はnetbeans + gccを使用していますが、これは定義へのハイパーリンクを含むコードアシスタンスを持っていますので、これは1つのオプションです。しかし、その機能を備えた他のIDEがあるかどうか、またIDEを使用していないときの最善の方法があるかどうかを知りたいと思います。

+1

適切なC++サポートを持つすべてのIDEがこの機能を提供するはずです。 –

+0

@OliCharlesworth:はい、しかし、Windowsの検索以外のIDEを使用していないときはどうすればよいでしょうか? (窓の上のIm)。 –

+1

コードを書くためにどのツールを使用していますか?答えは、通常、使用しているエディタによって異なります。 – sarnold

答えて

3

Doxygenを実行すると、HTMLベースのソースブラウザを生成できます。これは、コードにDoxygenスタイルのドキュメントを注釈する必要はありません。ここで

あなたは、多くの構成オプションを閲覧することができますdoxywizardと呼ばれるコンパニオンプログラムがあり

echo -e "SOURCE_BROWSER=YES\n EXTRACT_ALL=YES\n RECURSIVE=YES\n SEPARATE_MEMBER_PAGES=YES\n" |doxygen - 
firefox html/index.html 

...(Linux上でテストした)コマンドラインからDoxygenのを設定して起動する方法です生成されたHTMLをカスタマイズするために使用できます。また、doxygen -gを実行して、詳細なヒントを含む初期設定ファイルを作成することもできます。

私は、ソースブラウザを生成するには、次のデフォルト以外のオプションをお勧めします:あなたがメインのWebページを上に持って

SOURCE_BROWSER=YES ## display source code 
EXTRACT_ALL=YES ## display all items (not just "documented" ones) 
RECURSIVE=YES ## include source found in subdirectories 
SEPARATE_MEMBER_PAGES=YES ## optional -- each class member has its own page 

たら、興味のソースを参照します(または検索機能を使用する)ことができます。ソースは、関連する宣言へのクリック可能なリンクで相互参照されます。

+1

情報をありがとう、私が知ったことは、[libstdC++はすでにdoxygenを使ってドキュメントを生成しています!](http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/)です。 –

+0

'chromium-browser --app = file:// $(pwd)/ html/index.html' ##代替ビューア – nobar

+0

' chromium-browser --new-window html/index.html' – nobar

2

お試しCScope Emacsモジュールxscopeと一緒にEmacsにM-x cscope-find-global-definitionと言うことができます。これは、シンボルが定義されているファイルにジャンプします。 非常に便利です。

もちろん、EclipseやKDevelop、Code :: BlocksなどのIDEにもこのような機能が必要です。

+0

おかげさまで、CScopeはUnix上で普及しているようですが、私はそのページを見て「2000年とXPのすべての種類の奇妙なバグを表示するかもしれません」と思ったとき、それは最良の解決策ではないと考えました。また、私はそれについてもっと考えて、最高の解決策はおそらく "IDEを使用する"です。 –

+0

clang .. ctags、gcc-xml ..も同様です。 –

1

Eclipse CDTはプラットフォームに依存せず、このような機能を持っています(それ以上)。これは、プロジェクト内のすべてのインクルード(ライブラリ+自分のもの)のインデックスを作成するので、宣言の定義を見つけることができます(または、宣言する必要があります)。 Eclipseは、makefileでmake(nmake.exeなど)を起動するための追加の機能を備えたC++指向のテキストエディタとして考えることができます。 私はWinSDKのEclipse + MS cl.exeコンパイラを使用しています。彼らは一緒にチャームのように動作します。私はEclipseからnmake.exeを実行し、Eclipseは特別なIDEウィンドウにnmake.exeコンソールをうまくリダイレ​​クトします。また、コンパイラの出力を解析し、自動的に違反行を強調表示します。 Eclipse内からnmake.exeの環境変数を設定するだけです。

0

cscopeは、Cコードを理解するための私の好きなツールの1つですが、Windowsの世界にうまく翻訳できない場合があります。

exuberant ctagsは、数十の言語で定義を見つけるための優れたツールです。最も合理的なプログラミングエディタは、定義情報のためにctagsを呼び出すためのインタフェースを提供します。たとえば、^]を使用してシンボルの定義を検索し、^Tを使用して定義スタックをポップアップさせることができます。ctags -R .を使用してデータベースを構築し、エディタを使用して定義を検索します。 (例えば、vim -t fooctagsデータベースにfooタグを検索し、そのファイルや行にジャンプします。)

GNU idutilsパッケージはを見つけるためctagsに似ていくつかの素晴らしいユーティリティを提供し、さまざまな言語でシンボルのを使用しています。ほとんどのエディタでは、統合はctagsまたはcscopeとよく似ていませんが、の場合はツールを書く方が簡単かもしれません。 mkid .でデータベースを構築し、gid fooまたはlid fooまたは同様のルックアップを使用してシンボルを検索します。

私は3つのツールが、3つすべてを共通に使用する十分な機能を提供していないことがわかりました。 ctagsは、vimのソースを使って狩りを行います。cscopeは、他のツールだけで解決されていない複雑な状況にヒントを得るのに便利です。gid(特にgid -s ...)は、発信者と呼び出し先の検索に役立ちます。 (いずれもctagsでもcscopeでもtoken pastingを理解していませんが、gid -sで自分自身で解決策を近似できます。)

関連する問題