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.