BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #24159同步于 2009/5/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

想从源代码文件中获取所有被调用的函数名称

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