Próbuję dowiedzieć się, jak napisać makro, które przekaże zarówno ciąg znaków reprezentacji nazwy zmiennej, jak i samą zmienną do funkcji.
Na przykład biorąc pod uwagę 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óry wydrukowałby: my_val: 5
Próbowałem wykonać następujące czynności:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
Jednak, jak można się domyślić, wartość WARIANCJA wewnątrz cudzysłowów nie jest zastępowana, ale jest przekazywana jako literał ciągu „ZMIENNA”. Chciałbym więc wiedzieć, czy istnieje sposób na przekształcenie argumentu makra w sam literał ciągu.