Thread: RE: [Ctags] pthread.h
Brought to you by:
dhiebert
From: Kloss, B. <Bur...@kb...> - 2000-12-05 07:34:36
|
>> extern int foo __P((int bar)); >This is actually a function "declaration", rather than a >"definition" (per official C nomenclature). Quite right - sloppy use of the nomenclature on my part. >As was pointed out, you need to add the option "--c-types=+p", since >ctags does not generate tags for prototyps by default (in order to >avoid redundant tags for most code). >I have tried it here and verified that it correctly parses the Linux >/usr/include/pthreads.h file. Indeed it does - I tried it at home last night. Now I have to reread the documentation and try and figure out why .... :) Thanks Daren & Neil - much appreciated. Burkhard |
From: Neil B. <nei...@rd...> - 2000-12-05 08:46:16
|
"Kloss, Burkhard" wrote: > Indeed it does - I tried it at home last night. Now I have to reread the > documentation and try and figure out why .... :) Quite simple, once you get your head around standard use [when I ran into the same problem, I should've noticed myself]. Basically, normal use allows one to follow a tag to the required *code* (be it a type definition or code subprogram) when, erm, coding. In this sort of case, however, one wants the subprogram *declaration* (or specification), since the code body's not available, and this is a different kettle of fish. Given foo.h & foo.c in your development area, wich contain, respectively, the declaration (spec.) and definition (body) of the function 'foo()', one would usually want to follow a 'foo' tag and end up in foo.c at the code body, not foo.h (at best, you get a choice of which you want each time if both are 'tagged'). But for system includes, etc., it makes sense to have tags jump you to the (hopefully at least *slightly* commented [GTK+ is usually, thankfully]) function spec. in the relevant header file. So you do: ctags -R -f ~/.tags.dev ~/src/dev and ctags -R -f ~/.tags.std /usr/include ... for example. I wouldn't necessariy do a recursive tag-generation on /usr/include, though. You'll get all manner of s.....trange definitions you wouldn;t normally want. Filter on /usr/include/*.h and maybe sys/ and a couple of others. You can always create another 'full on' tags file for occasional use. Hmm. How did this get so waffley? Best shut up. -- =====================- http://www.racaldefence.com/ -==================== Neil Bird | If this .signature | work mailto:nei...@rd... | looks pants, then | $> cd /pub personal mailto:ne...@fn... | stop using Outlook! | $> more beer |
From: Darren H. <da...@hi...> - 2000-12-06 05:01:15
|
Neil Bird wrote: > Basically, normal use allows one to follow a tag to the required *code* > (be it a type definition or code subprogram) when, erm, coding. > > In this sort of case, however, one wants the subprogram *declaration* > (or specification), since the code body's not available, and this is a > different kettle of fish. Thanks, Neil for offering such a lucid explanation. One item of note: You may wish to add the -n (--excmd=n) option when generating tag files from source code which is stable and not subject to change, like /usr/include. This records the line numbers of the tags instead of the regular expression, thus reducing the size of the tag file considerably, which can make a huge difference for something like /usr/include. The reason that ctags normally records regular expressions is so that the tags can still be found even as the source code changes, reducing the necessity of frequently regenerating the tag file. -- Darren Hiebert <da...@hi...> http://darren.hiebert.com |
From: Neil B. <nei...@rd...> - 2000-12-06 08:37:51
|
Darren Hiebert wrote: > Thanks, Neil for offering such a lucid explanation. 'S'Okay - made sense for me to do it since I'd only just had to get it straight myself! It's the sort of thing that's 'obvious' in retrospect! > One item of note: You may wish to add the -n (--excmd=n) option ... Good idea - I hadn't noticed that one. I see that my [heavily filtered] Solaris 2.6 /usr/include tag file is 3.5Mb ... -- =====================- http://www.racaldefence.com/ -==================== Neil Bird | If this .signature | work mailto:nei...@rd... | looks pants, then | $> cd /pub personal mailto:ne...@fn... | stop using Outlook! | $> more beer |