我使用g ++编译器在Linux上使用英特尔代码覆盖工具。对于特定类,coverage工具显示的功能比源代码中实际存在的功能多2/3。
这些额外功能是什么?它们是编译器生成的函数吗?
我从代码覆盖率中排除头文件。 我的课很简单,有空的ctor和dtor。
我想以下函数是由编译器生成的。
答案 0 :(得分:1)
这个blog entry(关于使用GDB进行调试)解释了为什么你会看到“额外”的构造函数。
gcc为构造函数生成两个不同的函数体。一个是构造整个对象的常规对象,包括所有基础。另一个构造除虚拟基类之外的所有东西。碰巧的是,即使对于根本没有虚拟基础的类,gcc也会发出两个构造函数。