有没有办法(g ++选项?)来检查C ++编译器隐式生成的代码(例如所有默认的构造函数/析构函数)?
生成的C ++代码是理想的,但至少组装会很好。使用:
g++ -S -g -O0 <file.cpp>
没有给我任何带有生成的构造函数/析构函数的标签。
答案 0 :(得分:6)
我认为-fdump-tree-original
选项尽可能接近。不幸的是,它会显示您自己的代码和自动生成的代码,但它不会标记哪个是哪个。然而,它是GCC转储中最具可读性的,它会在执行任何优化之前显示生成的代码。
另一种选择是使用-fdump-translation-unit
。这会创建一个树的原始转储,其中包含所有内容。编译器组成的节点将标记为&#34; artificial&#34;。然而,这种格式对于人类来说并不容易阅读,并且即使对于一个简单的源文件,其中也有很多内容。为了从中获取任何有用的信息,您可能需要编写一个程序来读取它,然后遍历树以找到您感兴趣的节点并以更易读的格式打印它们。 / p>