Tôi đang cố gắng tìm ra cách viết một macro sẽ chuyển cả biểu diễn chuỗi ký tự của tên biến cùng với chính biến đó vào một hàm.
Ví dụ cho chức năng sau.
void do_something(string name, int val)
{
cout << name << ": " << val << endl;
}
Tôi muốn viết một macro để tôi có thể làm điều này:
int my_val = 5;
CALL_DO_SOMETHING(my_val);
Cái nào sẽ in ra: my_val: 5
Tôi đã thử làm như sau:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
Tuy nhiên, như bạn có thể đoán, VAR bên trong dấu ngoặc kép không được thay thế, mà chỉ được chuyển dưới dạng chuỗi theo nghĩa đen "VAR". Vì vậy, tôi muốn biết liệu có cách nào để biến đối số macro thành một chuỗi ký tự không.