我使用以下命令生成我的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文件中的定义,并将其引导到头文件中。
答案 0 :(得分:1)
确保您拥有正确的术语。在C中,函数 definitions 通常放在C文件中,而声明放入头文件中。
cscope命令f g(查找定义)应该正确地将您带到定义功能。如果您实际上在头文件中有定义(例如内联函数),则find definition命令也会将您带到那里。如果不是这种情况,您应该向cscope团队提交错误报告。
遗憾的是,Cscope不提供仅显示声明的功能。您可以使用find symbol命令(f s),但如果从代码中的许多位置调用该函数,则可能会显示很多结果。
您可以使用通常允许您从声明或定义中进行选择的ctags。我通常在我的项目中混合使用cscope和ctags,因为它们都没有提供 all 我想要的功能。