#define xCAT(A,B) … #define CAT(A,B) … #define xFN(TYPE,NAME) … #define FN(TYPE,NAME) … #define xLIST(EL) … #define LIST(EL) … #undef SET #define SET … #undef EL #define EL … /* Check that the conversion from SET to list of EL works as expected, * using input described by "str". */ static isl_stat FN(FN(FN(test_get_list,EL_BASE),from),SET_BASE)(isl_ctx *ctx, const char *str) { … }