Pré-processador C para dividir “int x” em int & x

Eu preciso ser capaz de obter o seguinte:

#define MY_MACRO(PARAM1,PARAM2) \
 MY_OTHER_MACRO(TYPENAME_OF(PARAM1),PARAMNAME_OF(PARAM1));\
 MY_OTHER_MACRO(TYPENAME_OF(PARAM2),PARAMNAME_OF(PARAM2));\

causar

MY_MACRO(int x,char *z) 

compilar como

MY_OTHER_MACRO(int,x);
MY_OTHER_MACRO(char*,z);

ou não seria o fim do mundo se compilado como:

MY_OTHER_MACRO(int,x);
MY_OTHER_MACRO(char,*z);

ou até mesmo isso seria ok também: (eu posso codificar MY_OTHER_MACRO para trabalhar com qualquer resultado)

MY_OTHER_MACRO(int,x);
MY_OTHER_MACRO(char,z);

alternativamente, se houver alguma maneira de contar os tokens separados por espaço em branco (e assumir que "*" é token separado, posso trabalhar com isso também - por exemplo, 2 vs 3) normalmente, os tokens são separados por vírgulas, até onde eu sei. Existe alguma maneira de usar outro personagem?

questionAnswers(2)

yourAnswerToTheQuestion