2010-06-17 16 views
3

J'essaye de générer des tags pour le C Standard Lib en utilisant Exuberant Ctags 5.8, mais il semble que les en-têtes ne sont pas complètement analysés ... Par exemple, quand je génère les tags pour /usr/include/string.h, je reçois ceci:Problème avec ctags exubérants sur Mac OS X

!_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 

de toute évidence, beaucoup de fonctions sont manquantes (strcpy, strlen, strcmp, etc ..) Voici un lien vers le fichier d'en-tête réelle: http://pastie.org/private/lvgvtg1lmzaenidg0rvq

Je viens de courir ctags /usr/include/string.h Est-ce que je fais quelque chose de mal? Toute aide serait appréciée ...

Répondre

4

Je crois que ctags n'inclut pas les prototypes de fonctions par défaut, seulement les implémentations de fonctions.

Si vous l'appelez ctags --c-kinds=+px /usr/include/string.h, est-ce que cela vous rapportera aussi les déclarations?

(Selon la page de manuel here, vous pouvez appeler ctags −−list−kinds=c pour savoir ce que vous pouvez obtenir à la sortie ctags.)

+0

Merci pour votre réponse! Nous avons répondu à peu près en même temps, donc j'ai choisi le vôtre comme réponse acceptée, car il était plus détaillé! – jeannicolas

3

Je trouve des informations pertinentes ici: http://www.mail-archive.com/[email protected]/msg210327.html

Notamment:

ctags ne génère pas de balises pour les prototypes de fonction par défaut, uniquement pour les définitions de fonctions réelles . Consultez la documentation de l' --- option types dans ctags (1)

Il s'avère que je dois ajouter le drapeau --c-kinds=+p pour elle pour analyser des prototypes de fonction. Je ne suis pas sûr pourquoi il n'analyse pas les prototypes par défaut?