4

我正在尝试使用 Exuberant Ctags 5.8 为 C 标准库生成标签,但是似乎没有完全解析标题...例如,当我为 /usr/include/string.h 生成标签时,我得到这个:

!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION   5.8 //
NULL    /usr/include/string.h   /^#define NULL /;"  d
_SIZE_T /usr/include/string.h   /^#define   _SIZE_T$/;" d
_SSIZE_T    /usr/include/string.h   /^#define _SSIZE_T$/;"  d
_STRING_H_  /usr/include/string.h   /^#define   _STRING_H_$/;"  d
size_t  /usr/include/string.h   /^typedef   __darwin_size_t     size_t;$/;" t
ssize_t /usr/include/string.h   /^typedef __darwin_ssize_t  ssize_t;$/;"    t
strerror    /usr/include/string.h   /^char  *strerror(int) __DARWIN_ALIAS(strerror);$/;"    v

显然,很多函数都丢失了(strcpy、strlen、strcmp 等。)这里是实际头文件的链接:http: //pastie.org/private/lvgvtg1lmzaenidg0rvq

我刚跑ctags /usr/include/string.h 我做错了吗?任何帮助,将不胜感激...

4

2 回答 2

4

我相信 ctags 默认不包含函数原型,只包含函数实现。

如果您将其称为ctags --c-kinds=+px /usr/include/string.h,那是否也会为您提供声明?

(根据此处的手册页,您可以调用ctags −−list−kinds=c以查找可以获取 ctags 输出的内容。)

于 2010-06-17T18:12:45.007 回答
3

我在这里找到了一些相关信息:http: //www.mail-archive.com/debian-bugs-closed@lists.debian.org/msg210327.html

尤其:

ctags 默认不为函数原型生成标签,只为实际的函数定义生成标签。请参阅 ctags(1) 中 ---kinds 选项的文档

所以事实证明我必须--c-kinds=+p为它添加标志来解析函数原型。我不确定为什么默认情况下它不解析原型?

于 2010-06-17T18:12:25.960 回答