使用bash查找函数的声明和定义

Ope*_*way 14 bash

我正在看一个包含100多个文件的大型C++项目.给定一个函数名称,如何才能找到使用bash工具如find或grep,声明和函数的定义?

谢谢

Sam*_*ost 13

尝试ack,这比grep更好.颜色突出,作品......

$ ack funcion_name
Run Code Online (Sandbox Code Playgroud)

打印出通过源文件递归搜索function_name的所有用法,它也足够聪明,可以忽略.svn和其他元数据


kva*_*our 5

我相信最强大的方法是为此使用专用工具,而不是使用grepack或任何其他顺序。总是有可能定义以最难以想象的方式分布在多行中。上述工具将很容易地返回请求的信息,例如:

int f(int a) { return 2; }
int g(a,b,c,d) int a,b,c,d; { return 2; }
Run Code Online (Sandbox Code Playgroud)

但是当您的来源有点复杂时,它们将无法提供完整的价值:

int f ( // declares a function
        // this function is going to be awesome      
        int a  // first variable
      ) { return 2; }
Run Code Online (Sandbox Code Playgroud)

您可能应该使用ctags.


gho*_*g74 4

在最简单的情况下,

grep -ER '^.*(.*);' file  #find declaration.
Run Code Online (Sandbox Code Playgroud)

至于定义,如果你想得到完整的定义,那就有点棘手了。(即从左大括号到右大括号)。您可能想通过使用示例 C++ 文件来展示您想要获得的内容