gpt4 book ai didi

python - 如何使用 pycparser 在函数声明中查找函数名称?

转载 作者:行者123 更新时间:2023-11-30 14:59:05 26 4
gpt4 key购买 nike

我找到了以下示例来搜索特定函数名称,例如 malloc,但我想查找 C 源文件的函数声明中的所有函数名称。因此,在 ReturnCode HashCreate(Hash** hash, unsigned int table_size) 的情况下,我正在查找 HashCreate 和行号。由于我不喜欢 Python 并且它看起来很复杂,所以我问我该如何做到这一点?

from __future__ import print_function
import sys

sys.path.extend(['.', '..'])

from pycparser import c_parser, c_ast, parse_file

class FuncCallVisitor(c_ast.NodeVisitor):
def __init__(self, funcname):
self.funcname = funcname

def visit_FuncCall(self, node):
if node.name.name == self.funcname:
print('%s called at %s' % (self.funcname, node.name.coord))


def show_func_calls(filename, funcname):
ast = parse_file(filename, use_cpp=True,
cpp_path='clang',
cpp_args=['-E'])
v = FuncCallVisitor(funcname)
v.visit(ast)


if __name__ == "__main__":
if len(sys.argv) > 2:
filename = sys.argv[1]
func = sys.argv[2]
else:
filename = 'hash.c'
func = 'malloc'

show_func_calls(filename, func)

最佳答案

func_defs示例正是您正在寻找的:

# Using pycparser for printing out all the functions defined in a
# C file.

关于python - 如何使用 pycparser 在函数声明中查找函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015484/

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