【发布时间】:2020-07-03 00:39:14
【问题描述】:
假设我包含一个包含大量函数的头文件。
#include "1000Functions.h"
Function1(42);
Function2("Hello");
Function1000("geeks!");
但是,我只想使用标题中的一些函数。在预处理、编译和链接(例如,使用 g++)之后,我的程序会包含所有 1000 个函数,还是只包含我使用的 3 个?
【问题讨论】:
-
假设我包含一个包含大量函数的头文件。 --
h文件中的内容可能不是函数体,只有函数原型。 -
一般来说,您“按使用量付费”。只有您使用的函数的目标代码才能出现在最终的可执行代码中。
-
取决于编译器和编译器优化级别。一些编译器可能在最低优化级别上是懒惰的,并且把所有东西都扔进去(这是更快的构建)。在更高的优化级别,编译器将消除任何未使用的函数(链接器也会有所帮助)。您可以通过让编译器生成“映射”文件或所有函数的交叉引用来验证这一点。
-
请阅读好的C++ programming book 然后是GCC 和GDB 的文档。另见this C++ reference
标签: c++ g++ c-preprocessor header-files