Saya mencoba mencari cara untuk menulis makro yang akan melewatkan representasi literal string dari nama variabel bersama dengan variabel itu sendiri ke dalam suatu fungsi.
Misalnya diberikan fungsi berikut.
void do_something(string name, int val)
{
cout << name << ": " << val << endl;
}
Saya ingin menulis makro sehingga saya bisa melakukan ini:
int my_val = 5;
CALL_DO_SOMETHING(my_val);
Yang akan mencetak: my_val: 5
Saya mencoba melakukan hal berikut:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
Namun, seperti yang Anda duga, VAR di dalam tanda kutip tidak diganti, tetapi hanya diteruskan sebagai string literal "VAR". Jadi saya ingin tahu apakah ada cara agar argumen makro diubah menjadi string literal itu sendiri.