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(查找定义)应该正确地将您带到函数定义。如果您实际上在头文件中有定义(例如内联函数),则查找定义命令也会将您带到那里。如果不是这种情况,您应该向 cscope 团队提交错误报告。

遗憾的是,Cscope 不提供仅显示声明的功能。您可以使用查找符号命令 (fs),但如果从代码中的许多位置调用该函数,这可能会显示很多结果。

您可以使用 ctags,它通常可以让您从声明或定义中进行选择。我通常在我的项目中混合使用 cscope 和 ctags,因为它们都没有提供我想要的所有功能。

于 2012-09-01T14:53:03.317 回答