当前位置: 技术问答>linux和unix
linux环境使用C语言编程:输入一个函数名,在home目录下找到此函数原型;找到目录下所有文件
来源: 互联网 发布时间:2017-05-29
本文导语: linux环境使用C语言编程:输入一个函数名,在home目录下找到此函数原型;找到目录下所有文件用到此函数的地方,并与函数原型进行匹配,检测参数个数参数类型等是否正确使用。我的思路是:使用正则表达式匹配找到函数原...
linux环境使用C语言编程:输入一个函数名,在home目录下找到此函数原型;找到目录下所有文件用到此函数的地方,并与函数原型进行匹配,检测参数个数参数类型等是否正确使用。我的思路是:使用正则表达式匹配找到函数原型,提取参数类型和参数个数遍历home目录找出函数使用的地方,并与原函数对比(参数类型,参数个数是否一致)问题难点是:原函数和调用函数的参数类型和参数个数如何提取。请各路大神不吝赐教,小弟拜谢了!!!或者有更好的思路也可以提出来让小弟参考一下。[size=24px][/size]
|
错怪你了
虽然没有很看明白你具体的实现环境,比如 “home目录下找到此函数原型”,你是怎么找到的,这个函数你是自己定义的函数吧
然后是 “找到目录下所有文件用到此函数的地方” 这句话什么意思,是指你在home下,定义了func.c里面定义了你要的function()函数,然后在main.h里面有包含,在main.c 里面有调用吗
所以我想你的前提是将这些.c .h文件都放在home 目录下,然后要找出这些文件里面 定义函数和调用函数的参数类型和参数个数 进行比较,是吗?
如果是这样的话,就可以写一个shell脚本,这样就可以在 c中用system()调用这个脚本。
vi find_func.sh
grep -n "function" home/*.c > a.txt
awk -F '(' '{print $2}' a.txt | sed 's/[)?]//g' > b.txt
awk -F ',' ‘{print NF}’ > c.txt
awk -F ':' '{print $1 $2}' a.txt >a.txt
paste -d b.txt a.txt
paste -d c.txt a.txt
这样就能在你的a.txt里面找到你要的东西了,分别是
第一列:文件名
第二列:行号
第三列:参数表
第四列:参数个数
如果需要更快捷的方法,可以自己安装一个cscop插件