Visual C ++编译器选项转储类层次结构

时间:2010-06-13 18:16:21

标签: c++ visual-c++ virtual-functions vtable

MS Visual C ++中的编译器选项是否等同于GCC的-fdump-class-hierarchy?即显示虚拟功能表布局。

2 个答案:

答案 0 :(得分:8)

试试

cl.exe / d1reportAllClassLayout test.cpp

输出类似于:

class request_handlerAttribute  size(8):
        +---
 0      | name
 4      | sdl
        +---



class perfmonAttribute  size(8):
        +---
 0      | name
 4      | register
        |  (size=3)
        +---

发现: + findstr / i class c1xx.dll> c1xx.txt
+然后手动检查c1xx.txt

希望它可以提供帮助,  Benedetto的

PS:这显然是一个未记录且不受支持的开关。
另请查看here以获得类似的切换。

答案 1 :(得分:0)

我很确定没有任何记录的开关。如果您稍微查看一下cl.exe,可以找到各种字符串,其中一些似乎与命令行选项有关。其中一个说:“分区(选项=%s)\ 0nul \ 0map \ 0ast”。

“ast”可能指的是一个抽象语法树,这可能意味着编译器AST的某种转储是可能的 - 但我还没有真正查看任何细节来弄清楚它在谈论什么,目标at或其他任何东西。就此而言,“ast”和“options =”可能根本不相关。即使它可以转储AST,但这并不一定意味着它可以告诉你有关vtable布局的任何信息。

长话短说,有足够的东西使得很难以真正的确定性排除。与此同时,还有很多工作要做更多工作,而不是暗示编译器可能具有一些无法转储内部结构的无证能力。