Estoy tratando de averiguar cómo escribir una macro que pasará una representación literal de cadena de un nombre de variable junto con la variable en sí a una función.
Por ejemplo, dada la siguiente función.
void do_something(string name, int val)
{
cout << name << ": " << val << endl;
}
Me gustaría escribir una macro para poder hacer esto:
int my_val = 5;
CALL_DO_SOMETHING(my_val);
Que imprimiría: my_val: 5
Intenté hacer lo siguiente:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
Sin embargo, como puede adivinar, el VAR dentro de las comillas no se reemplaza, sino que simplemente se pasa como la cadena literal "VAR". Entonces, me gustaría saber si hay una manera de convertir el argumento macro en una cadena literal.