提取 C 函数的参数类型
Extract C functions' parameter types
给定一个 .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/\*\([^ ]\)/* /; s/ *[^ ]*, */\n/g; s/ *[^ ]*$//; p; }'
这会从我的 C 代码中提取类型,但我不能说它适用于所有 C - YMMV。
sed 的一些注意事项:
- 前三个语句产生一个缓冲区,如下所示:
double x, double *y
- 下一条语句将
*y
分成* y
- 下一个将标识符后跟逗号变成换行符:
x, -> \n
- 最后一个替换丢弃尾随标识符:
y
给定一个 .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/\*\([^ ]\)/* /; s/ *[^ ]*, */\n/g; s/ *[^ ]*$//; p; }'
这会从我的 C 代码中提取类型,但我不能说它适用于所有 C - YMMV。
sed 的一些注意事项:
- 前三个语句产生一个缓冲区,如下所示:
double x, double *y
- 下一条语句将
*y
分成* y
- 下一个将标识符后跟逗号变成换行符:
x, -> \n
- 最后一个替换丢弃尾随标识符:
y