2010-06-17 108 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標誌爲它解析函數原型。我不確定它爲什麼不默認分析原型?