Tengo una situación en la que tengo bastantes funciones generadas, y me gustaría apuntarlas a algunas funciones genéricas que he creado (para permitirme reutilizar el código base cuando los nombres de las funciones generadas cambian).Definición del pre-procesador C para nombres de funciones generadas
Esencialmente, tengo una lista de los nombres de las funciones de la siguiente manera:
void Callback_SignalName1(void);
void Callback_SignalName2(void);
...etc
Una vez que estos se generan, me gustaría definir una macro para que puedan ser llamados genéricamente. Mi idea era esto, pero no he tenido suerte ... implementarlo como el C pre-procesador toma el nombre de la macro en lugar de lo que la macro se define como:
#define SIGNAL1 SignalName1
#define SIGNAL2 SignalName2
#define FUNCTION_NAME(signal) (void Callback_ ## signal ## (void))
...
...
FUNCTION_NAME(SIGNAL1)
{
..
return;
}
La cuestión es que recibo
void Callback_SIGNAL1(void)
en lugar de
void Callback_SignalName1(void)
¿hay una buena manera de evitar esto?
¿no debería ser FUNCTION_NAME #define (nombreFunc) nombreFunc (void)? –
Lo siento, editado para aclarar un poco más ... Dejé fuera una parte importante de que hay otra parte del nombre de la función para entrar allí ... – espais
Tenga en cuenta que el ## entre 'señal' y' (vacío) ' no es correcto. ## es para crear un solo token mediante la concatenación de tokens múltiples. El paréntesis abierto no puede ser (¡y no debería ser!) Parte del token que será el nombre de la función. –