获取C++中指针指向的变量的名称

获取C++中指针指向的变量的名称

问题描述:

我正在使用指向double变量的指针调试它们的值。我想在每次改变它指向的变量时打印指针指向的变量名称。这可能是通过编码每个变量,但有几十个,这将花费很多时间。我发现这种方式here at cplusplus.com(第二回复):获取C++中指针指向的变量的名称

#define SHOW(a) std::cout << #a << ": " << (a) << std::endl 

但只打印指针的名字不是它所指向的变量。

我使用键盘不断修改数值。使用调试器是不可能的。

+1

这是因为内存不包含任何变量名称。您必须使用编译器提供的符号和调试信息,或者构建自己的系统来存储这些信息。在编译阶段之外没有任何变量。 – user35443

+0

指针指向一个地址,而不是一个名字,它不知道,并且该地址上该变量的名称无关紧要。 –

+2

也许更好的主意是学习如何使用调试器 –

你可以有一些全局字符串,它会得到当前的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

不过虽然它的作品,我强烈建议你抛弃这种想法。改用调试器。

+0

但我使用键盘不断修改值。使用调试器是不可能的。 –

+0

这是什么意思,如果在程序中的任何一点都知道'x'指向什么? – user35443

+0

@ user35443询问OP。他问,我回答。 –