【发布时间】:2016-02-18 00:20:51
【问题描述】:
我写代码已经有一段时间了,但我没有受过计算机科学方面的经典训练,所以如果这个问题很荒谬,请放过我。
一段时间以来,我一直试图找到一个明确的答案,如果我在 C 中#include 一个文件,我会得到链接的文件的全部内容,还是只得到我使用的部分?如果它有 10 个函数,而我只使用其中 1 个函数,那么其他 9 个函数的代码是否包含在我的可执行文件中?这对我来说尤其重要,因为我正在研究微控制器并且内存很宝贵。
感谢您对这个问题的任何帮助。
【问题讨论】:
-
您可能想要检查一些现有线程(Do unused functions get optimized out?、Do compilers remove unused functions, definitions, variables, macros, includes etc)。这取决于编译器,但通常非静态函数不会得到优化,因为只有在链接器阶段,构建过程才知道函数是否会被实际使用。但是像@nneonneo 已经写过的那样,这样的函数在头文件中很少见。
-
#包含一个文件实际上与复制粘贴它的效果相同。
标签: c microcontroller microchip