Como concatenar duas vezes com o pré-processador C e expandir uma macro como em “arg ## _ ## MACRO”?
Eu estou tentando escrever um programa onde os nomes de algumas funções são dependentes do valor de uma determinada variável de macro com uma macro como esta:
#define VARIABLE 3
#define NAME(fun) fun ## _ ## VARIABLE
int NAME(some_function)(int a);
Infelizmente, a macroNAME()
transforma isso em
int some_function_VARIABLE(int a);
ao invés de
int some_function_3(int a);
Então, este é claramente o caminho errado para fazê-lo. Felizmente, o número de diferentes valores possíveis para VARIABLE é pequeno, então eu posso simplesmente fazer um#if VARIABLE == n
e listar todos os casos separadamente, mas eu queria saber se existe uma maneira inteligente de fazer isso.