【问题标题】:Problem with exuberant ctags on Mac OS XMac OS X 上的 ctags 有问题
【发布时间】:2011-03-05 01:54:39
【问题描述】:

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

【问题讨论】:

    标签: c macos ctags


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答!我们几乎同时回答,所以我选择你的作为接受的答案,因为它更详细!
    • 我也有同样的问题。但是这个答案没有帮助。 strcmp 和其他函数被忽略..
    【解决方案2】:

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

    值得注意的是:

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多