以g ++转储类/结构成员变量

ken*_*ytm 13 c++ gcc g++

是否有转换结构/类g++成员变量的标志或工具?为了说明,请考虑这样的源代码

struct A { virtual void m() {}; };
struct B : public A { int b; virtual void n() = 0; };
struct C : public B { int c1, c2; void o(); };
struct D : public C { virtual void n() {}; A d; };
Run Code Online (Sandbox Code Playgroud)

我想得到类似的东西

A:   0 = (vptr)

B:   0 = (vptr)
     4 = b

C:   0 = (vptr)
     4 = b
     8 = c1
    12 = c2

D:   0 = (vptr)
     4 = b
     8 = c1
    12 = c2
    16 = d
Run Code Online (Sandbox Code Playgroud)

(-fdump-class-hierarchy不起作用.它只打印成员函数.)

(假设我不知道的类AD,还是有那么多的班,我不想一一列举出来自己.)

(具体来说,我想转储http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/iokit/IOKit/IOUserClient.h的成员变量).

Kor*_*icz 6

使用正确的工具来完成正确的工作.g ++不是一个层次结构查看工具.

您可以随时使用doxygen之类的外部工具,它可以转储graphviz图表.

对于电源解决方案,有gcc-xml,可以将整个程序转储到可以随意解析的xml文件中.