我在静态库中的多个项目之间共享了一些代码。即使使用函数级链接,我也会在输出中获得比我想要的更多的目标代码 -请参阅有关该的另一个问题。
当然,减少链接到最终可执行文件的目标代码数量的最直接的解决方案是拆分翻译单元,以便我获得更多的 .obj 文件,每个文件都有更少的目标代码。我什至可以走极端——把每个函数放到一个单独的翻译单元中。
让我们假设我不在乎十倍多的 .cpp 文件造成的混乱,我不在乎可能的链接时间增长。
这种拆分成许多目标文件是否会增加可执行文件大小的开销?可执行文件是否会因为链接到其中的 .obj 文件(但总体而言它们具有完全相同的函数和变量)多 10 倍而变得更大?
更有可能影响最终 EXE 大小的因素(并非详尽列表):
简而言之,将代码拆分为更多翻译单元可能不会产生任何效果 - 相同的代码,只是重新组织。如果您的编译器不考虑整个程序优化,事情甚至可能会变得更糟,因为每个翻译单元中关于您的程序的信息较少。