2010-06-17 50 views
3

我正在尝试使用Exuberant Ctags 5.8为C标准库生成标签,但是它似乎并未完全解析标头......例如,当我生成标签/usr/include/string.h,我得到这个:在Mac OS X上使用繁琐的ctags问题

!_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 /[email protected]/ 
!_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

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

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

(据here手册页,你可以调用ctags −−list−kinds=c找出你可以得到的ctags输出。)

+0

谢谢您的回答!我们几乎同时回答,所以我选择了你的答案作为接受答案,因为它更详细! – jeannicolas 2010-06-17 18:23:49

3

我发现这里的一些相关信息:http://www.mail-archive.com/[email protected]/msg210327.html

值得注意的是:

CTAGS不会生成默认的函数原型,标签只对实际功能定义 。查看文档中的ctags的 ---种选择(1)

因此,原来我必须添加--c-kinds=+p标志为它解析函数原型。我不确定它为什么不默认分析原型?