Próbuję dowiedzieć się, jak napisać makro, które przekaże zarówno funkcję literową nazwę zmiennej wraz z samą zmienną do funkcji.Jak używać argumentu Makro jako literału ciągu?
Na przykład z następującą funkcją.
void do_something(string name, int val)
{
cout << name << ": " << val << endl;
}
chciałbym napisać makro, więc mogę to zrobić:
int my_val = 5;
CALL_DO_SOMETHING(my_val);
Które wydrukować: my_val: 5
Próbowałem następujący sposób:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
Jednak, jak można się domyślić, VAR wewnątrz cytatów nie zostaje zastąpiony, ale jest przekazywany jako ciąg dosłowny "VAR". Chciałbym się więc dowiedzieć, czy istnieje sposób na przekształcenie argumentu makr w literał łańcuchowy.
Jak starasz korzystać z tego? – chris