|
1
305
功能在
有趣的是,C++运行时
|
|
|
2
98
有 浮点数学库可用! 即使在最初的68000台机器(Mac、Atari ST、Amiga)上,浮点协处理器也往往是昂贵的附加组件。 要进行所有浮点运算,你需要一个相当大的库。数学会很慢。所以你很少使用浮子。你试图用整数或缩放整数做任何事情。当你不得不包括数学时,你咬牙切齿。通常,你会写自己的近似值和查找表来避免这种情况。
这就是为什么数学不是 标准 。许多或大多数程序没有使用单个浮点数。如果FPU一直存在,浮点数和双精度总是很便宜,毫无疑问,会有一个“标准数学”。 |
|
3
88
因为荒谬的历史实践,没有人愿意修复。将C和POSIX所需的所有函数整合到一个库文件中,不仅可以避免反复询问这个问题,而且在动态链接时还可以节省大量时间和内存,因为每个
一种所有函数都在一个库中的实现
|
|
4
33
因为
|
|
|
5
29
给出了一个解释 here :
[编辑]
不过,我不确定我是否同意这一点。如果你有一个图书馆,比如说,
|
|
6
8
关于与外部图书馆的链接,有一个深入的讨论 An Introduction to GCC - Linking with external libraries 。如果一个库是标准库(如stdio)的成员,那么您不需要向编译器(实际上是链接器)指定链接它们。
|
|
7
6
正如ephemient所说,默认情况下,C库libc是链接的,该库包含stdlib.h、stdio.h和其他几个标准头文件的实现。只是为了补充一下,根据“ An Introduction to GCC C中基本“Hello World”程序的链接器命令如下:
注意选项 -lc 在连接C库的第三行中。 |
|
|
8
4
包括
|
|
9
4
|
|
10
4
我认为这有点武断。你必须在某个地方画一条线(哪些库是默认的,哪些需要指定)。 它让你有机会用具有相同功能的另一个替换它,但我认为这样做并不常见。
我认为GCC这样做是为了保持与原始版本的向后兼容性
|
|
11
3
猜测 这是一种让根本不使用它的应用程序性能稍微好一点的方法。以下是我对此的看法。
例如,如果有一个软FPU,这可能是在C的早期 libm 分离可以防止不必要地链接大量大型(如果使用的话速度很慢)代码。 此外,如果只有静态链接可用,那么一个类似的论点也适用,即它将保持可执行文件的大小并缩短编译时间。 |
|
12
2
但是
GNU GCC团队将其设计为与其他头文件分开,默认情况下其他头文件会链接,但math.h文件不会。 在这里阅读项目编号14.3,如果你愿意,你可以全部阅读: Reason why math.h is needs to be linked 看看这篇文章: Why do we have to link math.h in GCC?
|
|
13
2
请注意
例如,以下简单程序:
可以使用以下命令成功编译和运行:
另请参见: |
|
14
2
是标准C库的一部分,默认情况下,GCC将链接到该库。 libm 默认情况下未链接到的文件,因此您必须指定它 -lm 顺便说一句,这些头文件和库文件之间没有关系。 |