提取C函数'参数类型

时间:2016-02-11 19:43:05

标签: c linux parameters llvm

给定一个.c文件和一个标识文件中定义的函数的函数名,我们如何自动提取其参数的类型(以其逐字字符串形式)?例如,C函数看起来像

int foo(double x, double* y){...}

我需要输出一个文件,比如说types,有两行

double 
double* 

我认为LLVM应该是一种矫枉过正。也许使用简单的Unix命令,例如' awk'可以做这个工作吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

ctags -x xpd.c | sed -n '/function/{s/.*(//; s/).*//; /^$/d;
s/\*\([^ ]\)/* \1/; s/ *[^ ]*, */\n/g; s/ *[^ ]*$//; p; }'

这会从我的C代码中提取类型,但我不能说它适用于所有C - YMMV。

关于sed的一些注释:

  • 前三个语句产生如下缓冲区:double x, double *y
  • 下一个语句将*y分隔为* y
  • 接下来将标识符后跟逗号转换为换行符:x, -> \n
  • 最后一次替换会丢弃尾随标识符:y