Como usar o argumento de macro como string literal?

Eu estou tentando descobrir como escrever uma macro que irá passar uma representação literal de seqüência de caracteres de um nome de variável junto com a variável em si em uma função.

Por exemplo, dada a seguinte função.

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

Eu gostaria de escrever uma macro para poder fazer isso:

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

Qual imprimiria:my_val: 5

Eu tentei fazer o seguinte:

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

No entanto, como você pode imaginar, o VAR dentro das aspas não é substituído, mas é passado como a string literal "VAR". Então, eu gostaria de saber se existe uma maneira de fazer com que o argumento da macro seja transformado em uma string literal.

questionAnswers(4)

yourAnswerToTheQuestion