CTAGS(1) UNIX Programmer's Manual CTAGS(1)NAME
Each line in the tags file contains the object name, the file in which it is declared, a location (regular expression or line number), the type of the object (function, macro, typedef, struct, global, method, class, null), the length of the object (in lines), a caller reference list, and a callee reference list. Fields are separated by whitespace (except for the address and the rest of the line, which are separated by "; to fool vi(1)), and caller/callee lists are enclosed in braces.
Files whose names end in .c or .h are assumed to be C source files; .m are assumed to be Objective-C source files; .l implies Lisp or Lex source; .y implies Yacc source; Others are scanned for Pascal or Fortran definitions; if none are found, C is assumed.
Tags for main are treated specially in C programs: the tag is named Mfile, making ctags useful in directories with more than one main program. The first main function found is also tagged simply as ``main.''
Multiple links to a file are only indexed once.
Does not handle C structs' having a separate name space; If a struct shares a name with any other object, the struct declaration will not be tagged.
Callee lists are generated in a shallow way; if a function references a local variable or structure field which has the same name as a tagged object, that object will be added to the function's callee list.
There's a hack to ignore duplicate global variables named "sccsid".
Does not know about #ifdefs.
The -g, -m, -r, -s and -t options should not necessarily be implied for -v and -x; they are present for backward compatibility.