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

时间:2015-07-12 11:07:39

标签: c++ pointers

我使用指向double变量的指针进行调试以修改其值。我希望每次更改指向的变量时都打印指针指向的变量名。这可以通过对每个变量进行编码,但是其中有几十个并且需要花费很多时间。我发现了这种方式here at cplusplus.com(第二次回复):

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

但它只打印指针的名称,而不是它指向的变量。

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

1 个答案:

答案 0 :(得分:1)

你可以有一些全局字符串来获取当前的指针名称。 然后使用一些宏来为内存地址和名称两者进行分配。

示例:

#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

但是虽然它有效但我强烈建议你放弃这个想法。请改用调试器。