2012-05-22 66 views
1

我用下面的命令生成的cscope我的數據庫:爲什麼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中,一:cs f g myfunction只會導致我在C文件中的定義,和幽冥的頭文件。

回答

1

確保您掌握了正確的術語。在C中,通常函數的定義被放在C文件中,而聲明進入頭文件。

cscope的命令F G(找到定義)應該正確帶你去功能定義。在頭文件中實際具有定義的情況下(例如內聯函數),find定義命令也會將您帶到那裏。如果不是這種情況,您應該向cscope團隊提交錯誤報告。

Cscope很遺憾沒有提供僅顯示聲明的功能。您可以使用find symbol命令(f s),但如果從代碼中的許多地方調用該函數,則可能會顯示大量結果。

您可以使用通常允許您從聲明或定義中進行選擇的ctags。我通常在我的項目中混合使用cscope和ctags,因爲它們都不提供全部我想要的功能。

相關問題