gpt4 book ai didi

c++ - 代码覆盖率中编译器生成的代码

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:13 24 4
gpt4 key购买 nike

我在使用 g++ 编译器的 Linux 上使用英特尔代码覆盖工具。对于特定类,覆盖工具显示的功能比源代码中实际存在的功能多 2/3。

这些额外的功能是什么?它们是编译器生成的函数吗?

我将头文件排除在代码覆盖范围之外。我的类(class)很简单,只有空的 ctor 和 dtor。

我猜下面的函数是由编译器生成的。

  1. 复制构造函数
  2. 赋值运算符
  3. 宏(不是我的情况)
  4. 信号槽连接机制(例如在 Qt moc 编译器中生成这些)

最佳答案

blog entry (关注使用 GDB 进行调试)解释了为什么您会看到“额外的”构造函数。

gcc generates two distinct function bodies for a constructor. One is a regular one that constructs the entire object, including all bases. Another one constructs everything except for virtual base classes. As it happens, gcc emits both constructors even for classes that have no virtual bases at all.

关于c++ - 代码覆盖率中编译器生成的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com