Mac OS X上的繁琐ctags问题

时间:2010-06-17 17:05:21

标签: c macos ctags

我正在尝试使用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我做错了什么?任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:4)

我认为ctags默认情况下不包含函数原型,只包含函数实现。

如果您将其称为ctags --c-kinds=+px /usr/include/string.h,那么这也可以获得声明吗?

(根据手册页here,您可以致电ctags −−list−kinds=c找出可以输出ctags的内容。)

答案 1 :(得分:3)

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

值得注意的是:

  

默认情况下,ctags不会为函数原型生成标记   对于实际的功能定义。请参阅文档   --- ctags(1)中的种类选项

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