変数名の文字列リテラル表現と変数自体の両方を関数に渡すマクロを作成する方法を理解しようとしています。
たとえば、次の関数が与えられます。
void do_something(string name, int val)
{
cout << name << ": " << val << endl;
}
これを実行できるように、マクロを作成したいと思います。
int my_val = 5;
CALL_DO_SOMETHING(my_val);
どちらが印刷されますか: my_val: 5
私は次のことを試みました:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
ただし、ご想像のとおり、引用符内のVARは置き換えられず、文字列リテラル「VAR」として渡されるだけです。したがって、マクロ引数を文字列リテラル自体に変換する方法があるかどうかを知りたいと思います。