xref: /Universal-ctags/Units/parser-c.r/macros.c.d/README (revision 3230cfb04347b3b9faea03f67265f20af1cc31a1)
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