我正在尝试使用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
我做错了什么?任何帮助将不胜感激......
答案 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
标志来解析函数原型。我不确定为什么它默认不解析原型?