1This case tests multiple behavior of C parser. 2 31. #pragma weak 4 52. Top level function call like macro expansions 6 7 (MACRO1, MACRO2, MACRO3) 8 9 If a macro takes one parameter, according to my observation ctags 10 records the parameter as a variable by default. It looks sensible 11 behavior. 12 13 Look at following code: 14 15 #define DEF_LANG(X) struct Lang X 16 ... 17 DEF_LANG(alpha); 18 19 In this case ctags records alpha by default. MACRO1 tests this 20 default behavior. 21 22 With -I option you can make this behavior for a specified macro be 23 disabled. MACRO2 tests the -I option. 24 25 If a macro takes more than one parameters, according to my 26 observation ctags records nothing. In the future we can change 27 this behavior interesting way but in this case tests the current 28 implementation(MACRO3). 29 303. name before double parenthesis 31 32 (__ARGS) 33 34 ctags.1 says: 35 36 Ctags will also try to specially handle arguments lists 37 enclosed in double sets of parentheses in order to accept the 38 following conditional construct: 39 40 extern void foo __ARGS((int one, char two)); 41 42 Any name immediately preceding the "((" will be automatically 43 ignored and the previous name will be used. 44 454. #undef 46