C语言

C标准主要由两部分组成,一部分 描述C的语法,另一部分描述C标准库。

语法

C标准指的就是ANSI C标准,有C90 C99 C10 C11. 一般认为的是C99。

标准库

C标准库定义了一组标准头文件,第个头文件中包含一些相关的函数,变量,类型声明和宏定义。要在一个平台上支持 C语言,不仅要实现C编译器,还要实现C标准库,这样的实现才算和会合C标准。不符合C标准。不符合C标准的实现也是存在的,例如很多单片机的C语言开发工具中只有C编译器而没有完整的C标准库。

在LINUX平台上最广泛使用的C函数库是GLIBC,其中包括C标准库的实现,也包括所有系纺函数。几乎所有 C 程序都要调用 GLIBC库函数,所以GLIBC是LINUX平台C程序运行的基础。 GLIBC提供一组头文件和一组库文件,最基本,最常用的C标准库函数和系统函数在 LIBC.SO库文件中,几乎所有 C程序运宪都依赖于LIBC.SO,有些做数学计算的C程序依赖于LIBM.SO。

以后我说LIBC时专指LIBC.SO这个库文件,而说GLIBC时指的是GLIBC提供的所有库文件。

标准库(C standard library / ISO C library / libc)

C的标准库是非常小的,这使得提供C的运行环境或移植C程序更加容易。

最早的C语言和标准库是C89版,1989年发布,历届版本: C89 / C90 / C95 / C99 / C11 / C18。

关于C语言和其标准库,有着不同的实现,比较主要的是Linux和Windows下使用的: GNU C Library (glibc) Microsoft C run-time library

在Unix/Linux系统里,其存在形式是shared library,并且和操作系统本身是不可分割的一部分(但Linux Kernel并不依赖任何库)。

在Window系统中,比如VS开发套件中,是以DLL库形式存在的。 参考:

https://en.wikipedia.org/wiki/C_standard_library ​ en.wikipedia.org The GNU C Library ​ www.gnu.org C Standard Library header files ​ en.cppreference.com Index of /~nsz/c/ ​ port70.net https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents ​ stackoverflow.com https://github.com/dryc/libc11 ​ github.com https://www.wikizero.com/en/C18_(C_standard_revision)www.wikizero.com http://bxr.su/NetBSD/lib/libc/ ​ bxr.su The Newlib Homepage​ sourceware.org

https://github.com/blanham/PDCLib github.com

GLIBC

一般C标准库在LINUX和UNIX下都是用GUN LIBC。 GLIBC手册可以在GUN网站上查询 https://www.gnu.org/software/libc/ 里边不但有手册,也有源代码,不过是英文的。

GLIBC并不是LINUX平台唯一的基础C函数库,也有人在开发别的C函数库,比如适用于嵌入式系统的UCLIBC。