Ich habe eine Situation, wo ich ziemlich viele generierte Funktionen habe, und möchte sie auf einige generische Funktionen zeigen, die ich erstellt habe (damit ich den Basiscode wiederverwenden kann) generierte Funktionsnamen ändern sich).C-Präprozessor, der für generierte Funktionsnamen definiert
Im Grunde habe ich eine Liste von Funktionsnamen wie folgt:
void Callback_SignalName1(void);
void Callback_SignalName2(void);
...etc
Sobald diese erzeugt werden, ich möchte ein Makro definieren, damit sie allgemein genannt werden. Meine Idee war, aber ich habe kein Glück hatte es die Umsetzung ... wie die C Pre-Prozessor den Namen des Makros nimmt statt dessen, was das Makro definiert ist als:
#define SIGNAL1 SignalName1
#define SIGNAL2 SignalName2
#define FUNCTION_NAME(signal) (void Callback_ ## signal ## (void))
...
...
FUNCTION_NAME(SIGNAL1)
{
..
return;
}
Die Frage ist, dass ich
void Callback_SIGNAL1(void)
statt
void Callback_SignalName1(void)
gibt es ein guter Weg, um dieses erhalten?
sollte es nicht #define FUNCTION_NAME (funcName) void funcName (void) sein? –
Sorry, bearbeitet für ein wenig mehr Klarstellung ... Ich habe einen wichtigen Teil weggelassen, dass es einen anderen Teil des Funktionsnamens gibt, um dorthin zu gehen ... – espais
Beachten Sie, dass ## zwischen 'signal' und' (void) ' das ist nicht richtig. ## dient zum Erstellen eines einzelnen Tokens durch Verketten mehrerer Token. Die öffnende Klammer darf nicht Teil des Tokens sein (und nicht sein!), Das der Funktionsname ist. –