This case tests multiple behavior of C parser.

1. #pragma weak

2. Top level function call like macro expansions

   (MACRO1, MACRO2, MACRO3)

   If a macro takes one parameter, according to my observation ctags
   records the parameter as a variable by default.  It looks sensible
   behavior.

   Look at following code:

   #define DEF_LANG(X) struct Lang X
   ...
   DEF_LANG(alpha);

   In this case ctags records alpha by default.  MACRO1 tests this
   default behavior.

   With -I option you can make this behavior for a specified macro be
   disabled.  MACRO2 tests the -I option.

   If a macro takes more than one parameters, according to my
   observation ctags records nothing. In the future we can change
   this behavior interesting way but in this case tests the current
   implementation(MACRO3).

3. name before double parenthesis

   (__ARGS)

   ctags.1 says:

       Ctags will also try to specially handle arguments lists
       enclosed in double sets of parentheses in order to accept the
       following conditional construct:

            extern void foo __ARGS((int one, char two));

       Any name immediately preceding the "((" will be automatically
       ignored and the previous name will be used.

4. #undef
