18.c 622 B

12345678910111213141516
  1. #define M_RETI_ARG27(x,y,z,aa, ...) aa
  2. #define M_RET_ARG27(...) M_RETI_ARG27(__VA_ARGS__)
  3. #define M_COMMA_P(...) M_RET_ARG27(__VA_ARGS__, 1, 1, 0, useless)
  4. #define M_EMPTYI_DETECT(...) 0, 1,
  5. #define M_EMPTYI_P_C1(...) M_COMMA_P(M_EMPTYI_DETECT __VA_ARGS__ () )
  6. #define EX
  7. #define empty(x)
  8. #define fnlike(x) yeah x
  9. /* If the following macro is called with empty arg (X183), the use
  10. of 'x' between fnlike and '(' doesn't hinder the recognition of this
  11. being a further fnlike macro invocation. */
  12. #define usefnlike(x) fnlike x (x)
  13. X181 M_EMPTYI_P_C1()
  14. X182 M_EMPTYI_P_C1(x)
  15. X183 usefnlike()