Je souhaite créer une macro C qui crée une fonction avec un nom basé sur le numéro de ligne. Je pensais que je pourrais faire quelque chose comme (la fonction réelle aurait des déclarations entre accolades):
#define UNIQUE static void Unique_##__LINE__(void) {}
Ce que j'espérais étendre à quelque chose comme:
static void Unique_23(void) {}
Cela ne marche pas. Avec la concaténation de jetons, les macros de positionnement sont traitées littéralement, finissant par s'étendre en:
static void Unique___LINE__(void) {}
Est-ce possible?
(Oui, il y a une vraie raison pour laquelle je veux faire cela, même si cela semble inutile).
__LINE__
(bien que ce soit un cas d'utilisation courant.