首页 > 解决方案 > 需要帮助从 c 标头中提取函数信息

问题描述

如何从 C 标头中提取函数原型信息?我希望我的数据采用以下格式。

function_name:return_type:signature

我的偏好是ctags。

标签: ctags

解决方案


如果您使用的是 Universal-ctags ( https://ctags.io ),则以下命令行用于以以下格式打印信息:

$ u-ctags --language-force=C -x --_xformat="%N:%{typeref}:%{signature}"  --kinds-C=p foo.h

这是一个例子:

 $ ./ctags --language-force=C -x --_xformat="%N:%{typeref}:%{signature}"  --kinds-C=p /usr/include/stdio.h | head
__asprintf:int:(char ** __restrict __ptr,const char * __restrict __fmt,...)
__getdelim:_IO_ssize_t:(char ** __restrict __lineptr,size_t * __restrict __n,int __delimiter,FILE * __restrict __stream)
__isoc99_fscanf:int:(FILE * __restrict __stream,const char * __restrict __format,...)
__isoc99_scanf:int:(const char * __restrict __format,...)
__isoc99_sscanf:int:(const char * __restrict __s,const char * __restrict __format,...)
__isoc99_vfscanf:int:(FILE * __restrict __s,const char * __restrict __format,_G_va_list __arg)
__isoc99_vscanf:int:(const char * __restrict __format,_G_va_list __arg)
__isoc99_vsscanf:int:(const char * __restrict __s,const char * __restrict __format,_G_va_list __arg)
asprintf:int:(char ** __restrict __ptr,const char * __restrict __fmt,...)
clearerr:void:(FILE * __stream)

推荐阅读