¿Cómo usar el argumento macro como cadena literal?

Estoy tratando de averiguar cómo escribir una macro que pase una representación literal de cadena de un nombre de variable junto con la variable en una función.

Por ejemplo dada la siguiente función.

<code>void do_something(string name, int val)
{
   cout << name << ": " << val << endl;
}
</code>

Me gustaría escribir una macro para poder hacer esto:

<code>int my_val = 5;
CALL_DO_SOMETHING(my_val);
</code>

Que se imprimiría:my_val: 5

Intenté hacer lo siguiente:

<code>#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
</code>

Sin embargo, como puede adivinar, el VAR dentro de las comillas no se reemplaza, sino que se pasa como el literal de la cadena "VAR". Así que me gustaría saber si hay una forma de que el argumento macro se convierta en una cadena literal.

Respuestas a la pregunta(4)

Su respuesta a la pregunta