Compruebe si un argumento macro es un puntero o no

¿Hay alguna forma "buena" de comprobar si una variable pasada a una macro es un puntero? p.ej.

#define IS_PTR(x) something
int a;
#if IS_PTR(a)
printf("a pointer we have\n");
#else
printf("not a pointer we have\n");
#endif

La idea es que esto no se hace en tiempo de ejecución sino en tiempo de compilación, como en: obtenemos un código diferente dependiendo de si la variable es un puntero o no. Así que me gustaría que IS_PTR () evaluara de alguna manera algún tipo de expresión constante. ¿Voy a esta idea de la manera equivocada?

Respuestas a la pregunta(3)

Su respuesta a la pregunta