有没有办法(g++选项?)检查C++编译器隐式生成的代码(例如,所有默认的构造函数/析构函数)?

拥有生成的C++代码将是理想的选择,但至少汇编是好的。使用:

g++ -S -g -O0 <file.cpp>

没有给我任何带有生成的构造函数/析构函数的标签。

最佳答案

我认为-fdump-tree-original选项尽可能接近您。不幸的是,它将同时显示您自己的代码和自动生成的代码,但不会标记出哪一个。但是,它是GCC转储中最易读的,并且在执行任何优化之前会先显示生成的代码。

另一种选择是使用-fdump-translation-unit。这将创建树的原始转储,其中包含几乎所有内容。编译器组成的节点将被标记为“人工”。但是,这种格式对于人类来说并不容易阅读,即使对于琐碎的源文件,也要花很多时间。为了从中获取有用的信息,您可能需要编写一个程序以将其读入,然后遍历树查找您感兴趣的节点,并以更易读的格式将其打印出来。

10-08 03:16