获取C++中指针指向的变量的名称
我正在使用指向double
变量的指针调试它们的值。我想在每次改变它指向的变量时打印指针指向的变量名称。这可能是通过编码每个变量,但有几十个,这将花费很多时间。我发现这种方式here at cplusplus.com(第二回复):获取C++中指针指向的变量的名称
#define SHOW(a) std::cout << #a << ": " << (a) << std::endl
但只打印指针的名字不是它所指向的变量。
我使用键盘不断修改数值。使用调试器是不可能的。
你可以有一些全局字符串,它会得到当前的pointee名称。 然后使用一些宏来做内存地址和名称的分配。
例如:
#include <iostream>
std::string str;
#define pointTo(x,y) do{ str = #y; x=&y; }while(0)
int main()
{
int* x , hiThere ,helloWorld;
pointTo(x,hiThere);
std::cout<<str<<"\n";
pointTo(x,helloWorld);
std::cout<<str<<"\n";
}
工作示例:http://coliru.stacked-crooked.com/a/aaf2ba8ce791d591
不过虽然它的作品,我强烈建议你抛弃这种想法。改用调试器。
但我使用键盘不断修改值。使用调试器是不可能的。 –
这是什么意思,如果在程序中的任何一点都知道'x'指向什么? – user35443
@ user35443询问OP。他问,我回答。 –
这是因为内存不包含任何变量名称。您必须使用编译器提供的符号和调试信息,或者构建自己的系统来存储这些信息。在编译阶段之外没有任何变量。 – user35443
指针指向一个地址,而不是一个名字,它不知道,并且该地址上该变量的名称无关紧要。 –
也许更好的主意是学习如何使用调试器 –