Eu quero criar uma macro C que cria uma função com um nome baseado no número da linha. Achei que poderia fazer algo como (a função real teria declarações entre colchetes):
#define UNIQUE static void Unique_##__LINE__(void) {}
Que eu esperava que se expandisse para algo como:
static void Unique_23(void) {}
Isso não funciona. Com a concatenação de token, as macros de posicionamento são tratadas literalmente, acabando por se expandir para:
static void Unique___LINE__(void) {}
Isso é possível fazer?
(Sim, há um motivo real pelo qual quero fazer isso, não importa o quão inútil pareça).
__LINE__
(embora esse seja um caso de uso comum.