Ho una situazione in cui ho alcune funzioni generate e vorrei indirizzarle ad alcune funzioni generiche che ho creato (per permettermi di riutilizzare il codice base quando il i nomi delle funzioni generate cambiano).Definizione del pre-processore C per i nomi delle funzioni generate
Essenzialmente, ho un elenco dei nomi di funzione come segue:
void Callback_SignalName1(void);
void Callback_SignalName2(void);
...etc
volta che questi sono generati, desidero definire una macro per consentire loro di essere chiamati genericamente. La mia idea era questo, ma non ho avuto fortuna attuazione ... come il C pre-processore prende il nome della macro invece di ciò che la macro è definita come:
#define SIGNAL1 SignalName1
#define SIGNAL2 SignalName2
#define FUNCTION_NAME(signal) (void Callback_ ## signal ## (void))
...
...
FUNCTION_NAME(SIGNAL1)
{
..
return;
}
La questione è che ricevo
void Callback_SIGNAL1(void)
invece di
void Callback_SignalName1(void)
c'è un buon modo per aggirare questo?
non dovrebbe essere FUNCTION_NAME # define (funcName) funcName void (void)? –
Scusate, modificato per un po 'più di chiarezza ... Ho lasciato fuori una parte importante che c'è un'altra parte del nome della funzione per andare lì ... – espais
Notate che il ## tra 'signal' e' (void) ' non è corretto. ## serve per creare un singolo token concatenando più token. La parentesi aperta non può essere (e non dovrebbe essere!) Parte del token che sarà il nome della funzione. –