c++ - 头文件中的代码会增加二进制大小吗?

标签 c++ binary executable

考虑一下:

class Foo{
      void func1(){
            /*func1 code*/

      }

      void func2(){
            /*func2 code*/

      }


};

案例 1:Foo.h 中的类 Foo

案例 2:类 Foo 在 Foo.h 和 Foo.cpp 之间很好地分离

其他各种 cpp 文件包括 Foo.h

我的问题是...情况 1 会导致更大的二进制文件吗?

最佳答案

也许会,也许不会。它确实与头文件无关。这里重要的是你的成员函数是在类定义中定义的。当这样定义成员函数时,它们将被视为内联 函数。如果编译器决定不实际内联对这些函数的任何调用,则不会对代码大小产生任何影响。如果编译器决定内联任何(或所有)调用,答案将是“视情况而定”。对小函数的内联调用可能会导致代码大小增加和代码大小减少。这一切都取决于函数本身和编译器的能力(特别是优化能力)。

关于c++ - 头文件中的代码会增加二进制大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576317/

相关文章:

c++ - 比较单个 vector 中的值

c++ - 在 Windows 上首次安装 Qt 5

在 C 中将大位字符串转换为十六进制

qt - 如何为我的基于 Qt 的应用程序创建 .exe 文件

c - Microsoft 编译器和 GNU 编译器在输出可执行文件大小方面的差异

java - 锁定 Jar 文件,将源文件隐藏在 .jar 文件中

c++ - 无法通过进位传播值(value)

c++ - 右递归文法还是左递归文法?

architecture - 将二进制转换为 arm

c - 弄清楚这个按位 AND 和 LSL 在 C 中到底做了什么