Есть ли флаг в g++
или инструменты для дампа переменных-членов struct/class? Чтобы проиллюстрировать, рассмотрите исходный код, подобный этому
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; };
Я хочу получить что-то похожее на
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
(-fdump-class-hierarchy
не работает, он только печатает функции-члены.)
(Предположим, я не знаю классов A
до D
, или существует так много классов, которые я не хочу перечислять сами).
(В частности, я хочу сбросить переменные-члены http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/iokit/IOKit/IOUserClient.h).