我需要能够获得以下信息:
#define MY_MACRO(PARAM1,PARAM2) \
MY_OTHER_MACRO(TYPENAME_OF(PARAM1),PARAMNAME_OF(PARAM1));\
MY_OTHER_MACRO(TYPENAME_OF(PARAM2),PARAMNAME_OF(PARAM2));\
导致
MY_MACRO(int x,char *z)
编译为
MY_OTHER_MACRO(int,x);
MY_OTHER_MACRO(char*,z);
或者如果它编译为:它不会是世界末日:
MY_OTHER_MACRO(int,x);
MY_OTHER_MACRO(char,*z);
甚至这也可以:(我可以编码 MY_OTHER_MACRO 以处理任一结果)
MY_OTHER_MACRO(int,x);
MY_OTHER_MACRO(char,z);
或者,如果有某种方法可以计算由空格分隔的标记(并假设“*”是单独的标记,我也可以使用它 - 例如 2 对 3)通常,标记用逗号分隔,只要我知道。有没有办法使用另一个字符?