Sobrecargar macro de preprocesador C / C ++ en la estructura de su argumento

Me gustaría escribir una macro de preprocesador que haga una cosa si su argumento es una tupla de tokens entre paréntesis, como esta:

MY_MACRO((x, y))

y algo más si es solo una ficha, como esta:

MY_MACRO(x)

¿Es eso posible

¿Qué hay de distinguir entre el número de tokens separados por espacios, es decir, entreMY_MACRO(x) yMY_MACRO(x y)?

enga en cuenta que no estoy tratando de sobrecargar en función de la cantidad de argumentos: es una macro unaria en todos los casos.

EDITA: Estoy dispuesto a usar macros variables si ayudan a

Respuestas a la pregunta(2)

Su respuesta a la pregunta