1

次のコマンドを使用して、cscope データベースを生成します。

tmpfile=$(mktemp)
find dir1/ dir2/ dir3/ -type f -regex ".*\.\([chlysS]\(xx\|pp\)*\|cc\|hh\|inl\|inc\|ld\)$" -print > $tmpfile
cscope -q -b -U -i $tmpfile -f cscope.out

vim では、a:cs f g myfunctionのみが C ファイルの定義につながり、ヘッダー ファイルのネザーにつながります。

4

1 に答える 1

1

用語を正しく理解していることを確認してください。C では、通常、関数定義は C ファイルに入れられますが、宣言はヘッダー ファイルに入れられます。

cscope コマンド fg (find definition ) を実行すると、関数定義が正しく表示されるはずです。実際にヘッダー ファイル (インライン関数など) に定義がある場合は、find definition コマンドでもそこに移動します。そうでない場合は、cscope チームにバグ レポートを提出する必要があります。

残念ながら、Cscope は宣言のみを表示する機能を提供していません。シンボル検索コマンド (fs) を使用することもできますが、関数がコード内の多くの場所から呼び出されると、多くの結果が表示される可能性があります。

通常、宣言または定義から選択できる ctags を使用できます。私は通常、プロジェクト内で cscope と ctags を組み合わせて使用​​します。どちらも必要な機能をすべて提供していないからです。

于 2012-09-01T14:53:03.317 に答える