我是C ++编程的新手,对编译器如何在c ++程序中包含标准库感到有些困惑。比如说我要使用sqrt()函数。我知道我必须在源代码中包含math.h头文件,但是数学库包含除sqrt()之外的许多函数。因此,我的问题是所有这些函数源代码都已添加到程序中,不是必需的,还是仅仅是我需要的函数?

我希望我的问题很清楚,在此先感谢。

最佳答案

不是模板的函数(不是那么简单,它们只是一两行)将分别编译,然后存储在“库”(不是头文件,它仅包含double sqrt(double);或类似的文件)中。

编译器将(链接到正确的编译时标志)链接到包含那些函数的C库。然后,链接器(由编译器调用)将介绍在构建库时编译的代码。因此,通常,在构建程序时不会编译源代码-它是在其他时间完成的。

链接器了解您正在构建的代码需要哪些功能,因此只会将这些功能添加到程序中,而不是所有功能[但是它可能会拉入某些功能,而不是您所要求的精确功能。可能是一些辅助功能,也可能是sqrt]需要的一些常规错误处理功能。

10-01 20:53
查看更多