Yas*_*ash 6 c standards libc standard-library libm
根据Wikipedia,有许多基于操作系统和编译器的标准C库变体.参考:http://en.wikipedia.org/wiki/C_standard_library
但我想了解在单个库中定义了在不同标头中声明的大量函数(例如:stdio.h,string.h,stdlib.h等).所有这些头文件的源代码文件是否相同,或者stdio.h,string.h等有不同的库?由于我是编程的初学者,我不知道多个源代码文件是否可以生成像可执行文件这样的单个库.如果可能,那么我可以理解libc包含所有标准头文件的定义.我在哪里可以看到标准C库的源代码?
它是静态库还是动态库?如果我的环境(OS/IDE)中存在两个版本,当我在源代码中包含任何标准头文件时,会将其链接起来.它依赖于IDE吗?但是对于gcc,程序员没有明确地包含libc.
libc是标准C库的标准名称吗?
在Windows操作系统/环境中它是否已经存在?如果它存在,它的名称是什么(仅限libc)?
还有像libm这样的其他标准C库吗?
一般来说,头文件(.h)包含函数和变量的声明。实现文件 (.c) 包含所声明函数的实际实现。由于可以将多个实现文件翻译并链接到单个库二进制文件中,因此您可以拥有一个具有多个标头的库。许多 C 库实现都是开源的,您可以在其相关项目页面查看它们的源代码。GNU libc和RedHat newlib是最突出的。我相信人们会在评论中添加更多内容。
实施定义。您可以将相同的源代码转换为静态或动态库。系统上同时安装这两个版本的情况并不罕见。由于几乎每个可执行文件都需要 libc,因此它通常默认添加到链接器输入中,因此您不必添加-lc到每个命令行。
不。标准 C 库的标准名称是“The Standard C Library”。请注意,实际上标准库的所有实现都使用非标准函数扩展了库。即使它们作为标准库的一部分,它们仍然是非标准的。(alloca()浮现在脑海中。)
如果我没记错的话,MSVCRT.dll 或类似的东西。
libm 代表标准库的数学部分,默认情况下不会将其添加到链接器输入中,因为很少需要它。只有一个标准 C 库,即 ISO/IEC 9899 语言标准所描述的库(因此得名)。可以很容易地假定给定系统上存在许多其他库,但只有 ISO/IEC 文档中描述的才是“标准”。