Я намагаюся зрозуміти, як написати макрос, який передаватиме як функцію рядкового літерального подання імені змінної разом із самою змінною.
Наприклад, задана наступна функція.
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". Тому я хотів би знати, чи є спосіб перетворити аргумент макросу на сам рядковий літерал.