linux环境使用C语言编程:输入一个函数名,在home目录下找到此函数原型;找到目录下所有文件用到
linux环境使用C语言编程:输入一个函数名,在home目录下找到此函数原型;找到目录下所有文件用到此函数的地方,并与函数原型进行匹配,检测参数个数参数类型等是否正确使用...
linux环境使用C语言编程:输入一个函数名,在home目录下找到此函数原型;找到目录下所有文件用到此函数的地方,并与函数原型进行匹配,检测参数个数参数类型等是否正确使用。
我的思路是:
使用正则表达式匹配找到函数原型,提取参数类型和参数个数
遍历home目录找出函数使用的地方,并与原函数对比(参数类型,参数个数是否一致)
问题难点是:原函数和调用函数的参数类型和参数个数如何提取。
请各路大神不吝赐教,小弟拜谢了!!!或者有更好的思路也可以提出来让小弟参考一下。 展开
我的思路是:
使用正则表达式匹配找到函数原型,提取参数类型和参数个数
遍历home目录找出函数使用的地方,并与原函数对比(参数类型,参数个数是否一致)
问题难点是:原函数和调用函数的参数类型和参数个数如何提取。
请各路大神不吝赐教,小弟拜谢了!!!或者有更好的思路也可以提出来让小弟参考一下。 展开
2个回答
展开全部
我是这样想的
找到函数之后,截取函数名之后的括号里面的字符串,然后trim前后的空格,然后以‘,’split;生成的数组是几个,参数就是几个;
参数类型的话 原函数就把之前split生成的字符串(如 int abc)以' 'split一下取第一个元素就是类型。但是调用的地方不知道怎么搞,难道要把变量名字搜一下,才能找到是什么类型?
找到函数之后,截取函数名之后的括号里面的字符串,然后trim前后的空格,然后以‘,’split;生成的数组是几个,参数就是几个;
参数类型的话 原函数就把之前split生成的字符串(如 int abc)以' 'split一下取第一个元素就是类型。但是调用的地方不知道怎么搞,难道要把变量名字搜一下,才能找到是什么类型?
追问
看了你的回答我有了些启发,对于获取参数个数可以通过识别“,”有几个再加1也可以得出参数个数。
有两个问题请教一下
如何获取原函数括号里面的字符串呢
对于获取参数类型,如果参数里面有static int,或者const int这样的声明,我截取第一个元素就不是参数类型了,而是static或者const关键字了,这个该怎么解决呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询