J'essaie de comprendre comment écrire une macro qui passera à la fois une représentation littérale d'une chaîne de caractères d'un nom de variable et la variable elle-même dans une fonction.
Par exemple, compte tenu de la fonction suivante.
void do_something(string name, int val)
{
cout << name << ": " << val << endl;
}
Je voudrais écrire une macro pour pouvoir le faire :
int my_val = 5;
CALL_DO_SOMETHING(my_val);
Qui s'imprimerait : my_val: 5
J'ai essayé de faire ce qui suit :
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
Cependant, comme vous pouvez le deviner, le VAR à l'intérieur des guillemets n'est pas remplacé, mais est simplement transmis en tant que chaîne littérale "VAR". J'aimerais donc savoir s'il existe un moyen de transformer l'argument de la macro en une chaîne de caractères littérale.