Ich versuche herauszufinden, wie man ein Makro schreibt, das sowohl eine Zeichenfolgenliteraldarstellung eines Variablennamens als auch die Variable selbst an eine Funktion übergibt.
Zum Beispiel die folgende Funktion gegeben.
void do_something(string name, int val)
{
cout << name << ": " << val << endl;
}
Ich möchte ein Makro schreiben, damit ich dies tun kann:
int my_val = 5;
CALL_DO_SOMETHING(my_val);
Welches würde ausdrucken: my_val: 5
Ich habe Folgendes versucht:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
Wie Sie vielleicht erraten haben, wird die VAR in den Anführungszeichen jedoch nicht ersetzt, sondern nur als Zeichenfolgenliteral "VAR" übergeben. Ich würde gerne wissen, ob es eine Möglichkeit gibt, das Makroargument selbst in ein String-Literal umzuwandeln.