J'essaie de comprendre comment écrire une macro qui passera à la fois une représentation littérale de chaîne d'un nom de variable avec la variable elle-même dans une fonction.
Par exemple étant donné 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);
Ce qui 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 passé en tant que chaîne littérale "VAR". Je voudrais donc savoir s'il existe un moyen de transformer l'argument macro en une chaîne littérale elle-même.