3

gcc を使用しているときにヘッダー ファイルで定義を見つけるための推奨される方法はありますか? MSVC を使用している場合は、右クリックして [定義に移動] を選択するだけで済みます。これは非常に便利です。

私は netbeans + gcc を使用しましたが、定義へのハイパーリンクを含むコード支援があるため、これが 1 つのオプションです。ただし、その機能を備えた他の IDE があるかどうか、および IDE を使用しない場合の最善の方法があるかどうかを知りたいです。

4

4 に答える 4

3

Doxygenを実行して、HTML ベースのソース ブラウザを生成できます。これには、コードに Doxygen スタイルのドキュメントで注釈を付ける必要はありません。C++Java、およびMarkdownを含む複数の言語で動作します(.mdファイルは「関連ページ」に移動します)。

コマンドラインからDoxygenを設定して起動する方法は次のとおりです(Linuxでテスト済み)...

## basic
echo -e "SOURCE_BROWSER=YES\n EXTRACT_ALL=YES\n RECURSIVE=YES\n" |doxygen -
xdg-open html/index.html

また

## include diagrams and non-public content -- and launch browser immediately
echo -e "HAVE_DOT=YES\n CALL_GRAPH=YES\n CALLER_GRAPH=YES\n SOURCE_BROWSER=YES\n EXTRACT_ALL=YES\n EXTRACT_PRIVATE=YES\n EXTRACT_STATIC=YES\n RECURSIVE=YES\n SEPARATE_MEMBER_PAGES=YES\n GENERATE_LATEX=NO\n EXCLUDE_SYMLINKS=YES" |doxygen - && chromium-browser --new-window html/index.html

doxywizardというコンパニオン プログラムがあり、生成された HTML をカスタマイズするために使用できる多くの構成オプションをブラウズできます。または、実行doxygen -gして初期構成ファイル (詳細なヒントを含む) を作成することもできます。

ソース ブラウザを生成するには、次のデフォルト以外のオプションをお勧めします。

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

メイン Web ページが表示されたら、関心のあるソースを参照できます (または検索機能を使用できます)。ソースは、関連する宣言へのクリック可能なリンクで相互参照されます。


この問題に何度か遭遇しました。doxygen は非常に長いファイル名を作成でき、Linux の暗号化されたホーム ディレクトリには143 文字の制限があります。これを回避するにhtmlは、家の外にフォルダーを書き込む必要がある場合があります。

手っ取り早い解決策は、 orhtml内のフォルダーにリンクすることです。データ セキュリティを強化するためにアクセス許可を設定することもできます。/tmp/dev/shmchmod

于 2012-01-16T04:17:52.813 に答える
2

CScopeを試してください。Emacs モジュールと一緒に、シンボルが定義されているファイルにジャンプするxscopeように Emacs に指示できます。とても便利です。M-x cscope-find-global-definition

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

于 2012-01-16T00:52:26.827 に答える
1

Eclipse CDT はプラットフォームに依存せず、そのような機能 (およびその他の機能) を備えています。プロジェクト (ライブラリ + 自分自身) に含まれるすべてのインクルードをインデックス化するため、任意の宣言 (または、任意の宣言) の定義を見つけることができます。Eclipse は、makefile で make (nmake.exe など) を起動する追加機能を備えた、派手な C++ 指向のテキスト エディターと考えることができます。私は、WinSDK の Eclipse + MS cl.exe コンパイラを使用しています。Eclipse から nmake.exe を実行すると、Eclipse は nmake.exe コンソールを適切に特別な IDE ウィンドウにリダイレクトします。また、コンパイラの出力を解析し、問題のある行を自動的に強調表示します。必要な作業は、Eclipse 内から nmake.exe の環境変数をセットアップすることだけです。

于 2012-01-16T03:22:56.973 に答える
0

cscopeはCコードを理解するための私のお気に入りのツールの1つですが、Windowsの世界にうまく変換されない可能性があります。

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

GNUidutilsパッケージは、さまざまな言語で記号の使用ctags法を見つけるために似たいくつかの優れたユーティリティを提供します。ほとんどのエディターでは、統合はまたはほど良くありませんが、ツールを作成するが簡単な場合があります。またはまたは同様のルックアップを使用してデータベースを構築し、シンボルをルックアップします。ctagscscopemkid .gid foolid foo

3つのツールは、3つすべてを一般的に使用するのに十分な機能を提供していることがわかりました。ctagsソースをvim非常にすばやくcscope検索し、発信者と着信者を見つけるのに役立ちます。また、gid(特にgid -s ...)他のツールでは解決できなかった複雑な状況に関するヒントを得るのに適しています。(トークンの貼り付けctagsについてもよく理解していませんが、cscope自分で解決策を概算できます。)gid -s

于 2012-01-16T03:33:03.393 に答える