4

ExuberantCtags5.8を使用してCStandardLibのタグを生成しようとしていますが、ヘッダーが完全に解析されていないようです...たとえば、/ 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 私は何か間違ったことをしていますか?どんな助けもいただければ幸いです...

4

2 に答える 2

4

ctagsにはデフォルトで関数プロトタイプは含まれておらず、関数の実装のみが含まれていると思います。

あなたがそれをと呼ぶならばctags --c-kinds=+px /usr/include/string.h、それはあなたにも宣言を得るのですか?

(ここのマニュアルページによると、ctags −−list−kinds=cctagsを出力するために何を取得できるかを調べるために呼び出すことができます。)

于 2010-06-17T18:12:45.007 に答える
3

ここでいくつかの関連情報を見つけました:http://www.mail-archive.com/debian-bugs-closed@lists.debian.org/msg210327.html

特に:

ctagsは、デフォルトでは関数プロトタイプのタグを生成せず、実際の関数定義に対してのみ生成します。ctags(1)の---kindsオプションのドキュメントを参照してください

したがって、--c-kinds=+p関数プロトタイプを解析するには、フラグを追加する必要があります。デフォルトでプロトタイプを解析しない理由がわかりませんか?

于 2010-06-17T18:12:25.960 に答える