给定一个 .c 文件和一个标识文件中定义的函数的函数名称,我们如何自动提取其参数的类型(以其逐字字符串形式)?例如,C 函数看起来像
int foo(double x, double* y){...}
我需要用两行输出到一个文件,比如types
double
double*
我想 LLVM 应该是一种矫枉过正。也许使用一个简单的 Unix 命令,例如 'awk' 就可以完成这项工作?
最佳答案
试试这个:
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
关于c - 提取 C 函数的参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35348625/