example2.c
// this file shows an example of weird Ctags 5.8 output; likely error; finds additional prototypes for function SomeFunction
#include <windows.h>
#define assert(A) ((A) ? (void)0 : (ExitProcess(EXIT_FAILURE)))
static int SomeFunction(int i1, int i2); // line 8, declaration (prototype)
static int SomeFunction(int i1, int i2) // line 10, definition
{
return 0;
}
int main(int argc, char** argv)
{
int i1;
int i2;
assert(SomeFunction(i1, i2) == 0); // this is detected as another function prototype (line 19)
assert(SomeFunction(i1, i2) == 0); // and this as yet another (line 20)
assert(0 == SomeFunction(i1, i2)); // however, this is OK (not detected as another prototype)
return 0;
}
// Ctags command line:
// ctags.exe --fields=-afiklmnSzt+sK --c-kinds=+lp --excmd=number -f ctags.tmp *
// the generated ctags.tmp file follows:
/*
!_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 //
SomeFunction example2.c 10;" function
SomeFunction example2.c 19;" prototype
SomeFunction example2.c 20;" prototype
SomeFunction example2.c 8;" prototype
assert example2.c 6;" macro
i1 example2.c 17;" local
i2 example2.c 18;" local
main example2.c 15;" function
*/