返回信息流想从一份源代码文件中(*.c或者*.cpp)中把所有被调用的函数名称提取出来,不知道有什么高效的方法?
这是一条镜像帖。来源:北邮人论坛 / cpp / #24159同步于 2009/5/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
想从源代码文件中获取所有被调用的函数名称
kangkai810
2009/5/23镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
我大致想能不能这样
1、定义一个string类型的数组arrayListCode,打开源文件逐行读取,读取的每一行代码保存到数组中 的每一项
2、遍历数组进行分析
for(int i=0;i<arrayListCode.Length;i++)
{
if(true == arrayListCode[i].Contains('('))
{
//如果这一行代码中存在字符'('那么就认为有函数调用
接下来怎么把函数名称取出来呢?
有左括号就是函数调用么?
【 在 kangkai810 (kangkai810) 的大作中提到: 】
: 我大致想能不能这样
: 1、定义一个string类型的数组arrayListCode,打开源文件逐行读取,读取的每一行代码保存到数组中 的每一项
: 2、遍历数组进行分析
: ...................
我用正则了,凑合……问题还是很多……
$pattern="gets[ ]*\("
【 在 kangkai810 (kangkai810) 的大作中提到: 】
: 想从一份源代码文件中(*.c或者*.cpp)中把所有被调用的函数名称提取出来,不知道有什么高效的方法?
还有更好的正则匹配方法么?我的例子不能处理这种情况:
printf("gets()")
【 在 wks (cloverprince) 的大作中提到: 】
: 楼主这项工作,难度不亚于做一个编译器。
: 如果是静态分析,ctags和cscope是别人已经做好的分析工具
: 动态分析的话,ptrace可以列出调用的函数。
: ...................
【 在 yegle 的大作中提到: 】
: 还有更好的正则匹配方法么?我的例子不能处理这种情况:
: printf("gets()")
我想实在不行 就把gets printf strcpy弄个黑名单 应付下算了~楼上不是有人说 这活差不多就是编译器么 ^_^