gpt4 book ai didi

c - 使用正则表达式匹配调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:10 26 4
gpt4 key购买 nike

我正在尝试使用 grep 查找特定 C 函数的所有调用者。

例如:

void foo()
{
...
ret = my_bar()
}

对于 my_bar() 的所有出现,我想从调用 my_bar() 的地方打印相应的函数名称。

我试过了(基于Regex (grep) for multi-line search needed)

grep -Pzo "(?s)^{\N*?.*?my_bar"*.c

使用 Perl 正则表达式,但这并不像预期的那样有效。它在 before foo() 函数开始匹配,直到 my_bar()

这可以用 grep/perl 和 regex 实现吗,还是我必须使用像 cscope 这样的工具?

最佳答案

一个 Perl 单行代码,它会记住最后一个函数,并在找到 my_bar() 时打印它的名称。这非常简单,如果它多次调用 my_bar() ,它会多次打印一个函数,但你明白了基本的想法。

perl -ne '$fun = $_ if /^\w+ \w+\(.+\)$/; if (/my_bar\(\)/) { print "$fun" }' *.c

下面的变体应该涵盖具有多行参数列表和尾随注释的函数:

perl -ne '$fun = $_ if /^\w+ \w+\(.+$/; if (/my_bar\(\)/) { print "$fun" }' *.c

关于c - 使用正则表达式匹配调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18822207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com