c++ - 在 g++ 中转储类/结构成员变量

标签 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; };

我想得到类似的东西

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 不起作用。它只打印成员函数。)

(假设我不知道 AD 的类,或者有太多的类我不想自己列出来。)

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

最佳答案

为正确的工作使用正确的工具。 g++ 并不是一个层次结构查看工具。

您始终可以使用外部工具,例如 doxygen , 可以转储 graphviz图表。

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

关于c++ - 在 g++ 中转储类/结构成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123823/

相关文章:

c++ - RS232通讯经常出错

ios_base.h 中的 C++ 错误

c++ - Segfault声明类型为vector <shared_ptr <int >>的变量

C++:如何阻止编译器使用大模板参数发送垃圾邮件错误?

c++ - 为什么 QVector 的迭代器内部使用前缀增加而后缀减少?

c++ - 组织 sqlite3 C/C++ 准备语句(避免全局代码困惑)

c++ - 为什么 g++ 4.8.1 会发出转换警告

c++ - 为什么即使函数是内联的,这段代码也会变慢?

gcc/g++ 选项将所有目标文件放入单独的目录中

c++ - "sizeof new int;"是未定义的行为吗?