Jak połączyć dwa razy z preprocesorem C i rozwinąć makro jak w „arg ## _ ## MACRO”?

Próbuję napisać program, w którym nazwy niektórych funkcji zależą od wartości pewnej zmiennej makra z takim makrem:

#define VARIABLE 3
#define NAME(fun) fun ## _ ## VARIABLE

int NAME(some_function)(int a);

Niestety makroNAME() zamienia to w

int some_function_VARIABLE(int a);

zamiast

int some_function_3(int a);

więc jest to zdecydowanie zły sposób na to. Na szczęście liczba różnych możliwych wartości dla zmiennej jest mała, więc mogę po prostu zrobić#if VARIABLE == n i wymień wszystkie przypadki osobno, ale zastanawiałem się, czy jest na to sprytny sposób.

questionAnswers(2)

yourAnswerToTheQuestion