Voglio creare una macro C che crei una funzione con un nome basato sul numero di riga. Ho pensato di poter fare qualcosa del tipo (la funzione reale avrebbe dichiarazioni all'interno delle parentesi graffe):
#define UNIQUE static void Unique_##__LINE__(void) {}
Che speravo si espandesse a qualcosa come:
static void Unique_23(void) {}
Non funziona. Con la concatenazione di token, le macro di posizionamento vengono trattate letteralmente, finendo per espandersi a:
static void Unique___LINE__(void) {}
È possibile farlo?
(Sì, c'è una vera ragione per cui voglio farlo, non importa quanto possa sembrare inutile).
__LINE__
(anche se questo è un caso d'uso comune.