Quiero crear una macro en C que cree una función con un nombre basado en el número de línea. Pensé que podría hacer algo como (la función real tendría declaraciones entre llaves):
#define UNIQUE static void Unique_##__LINE__(void) {}
Que esperaba que se expandiera a algo como:
static void Unique_23(void) {}
Eso no funciona. Con la concatenación de tokens, las macros de posicionamiento se tratan literalmente y terminan expandiéndose a:
static void Unique___LINE__(void) {}
¿Es posible hacerlo?
(Sí, hay una razón real por la que quiero hacer esto, sin importar cuán inútil parezca).
__LINE__
(aunque ese es un caso de uso común.