Wie kann ich zweimal mit dem C-Präprozessor verketten und ein Makro wie in „arg ## _ ## MACRO“ erweitern?

Ich versuche ein Programm zu schreiben, in dem die Namen einiger Funktionen vom Wert einer bestimmten Makrovariablen abhängen.

#define VARIABLE 3
#define NAME(fun) fun ## _ ## VARIABLE

int NAME(some_function)(int a);

Leider hat das MakroNAME() macht das zu

int some_function_VARIABLE(int a);

eher, als

int some_function_3(int a);

Das ist eindeutig der falsche Weg. Glücklicherweise ist die Anzahl der möglichen Werte für VARIABLE gering, so dass ich einfach eine machen kann#if VARIABLE == n und listen Sie alle Fälle getrennt auf, aber ich habe mich gefragt, ob es eine clevere Möglichkeit gibt, dies zu tun.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage