访问程序中的符号表以打印结构的字段名称

时间:2016-06-03 10:38:55

标签: c++ c visual-c++

我想打印结构的所有字段名称(我正在使用Visual Studio 2012)。

现在,我知道字段名称信息在二进制文件中丢失,但它在编译时出现。因此,如果以某种方式,我可以访问代码中的结构符号表,那么我应该能够打印字段名称。

用例是结构的定义可能会随着不同的体系结构而改变,而不是编写体系结构相关的代码,我想直接从符号表中访问字段名称。

修改

我感兴趣的字段名称的结构是" _CONTEXT"出现在" winnt.h"。它有多个定义,我想在不编写体系结构相关代码的情况下在当前体系结构上打印定义。

1 个答案:

答案 0 :(得分:0)

在C / C ++中你不能这样做,因为语言没有像C#或Java那样的反射。您可以编写自己的函数,将名称,类型和大小打印到某个string对象中。您可能具有虚函数RenderMembers(或类似)的接口。让所有需要的类/结构继承它并实现它。

MFC RUNTIME_CLASS有类似的东西。