函数库和系统库

C标准库

标准库是按照C标准定义的一系列的头文件,在各个系统对其进行实现。

不同编译器对标准库函数有一定的扩展,其中扩展的部分不能在各个系统使用。

操作系统库

每个操作系统都有大量函数提供给开发者使用,但不同系统的函数都是不一样的。

C标准库只是取其极少的一部分加以标准化,使一些基本功能可以用于各个系统。

如果要使用特定系统的函数,需要引入对应系统相关的头文件。

Windows

Windows操作系统提供的Windows API用于在Windows上编程,需要引入windows.h头文件。

windows.htypedef了基本类型,并且用全大写,如DWORDLPTSTR等。 Windows API中的函数使用每个单词首字母大写的帕斯卡命名格式,如CreateFile

POSIX

可移植操作系统接口(Portable Operating System Interface,POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称。

在Window操作系统下,可以使用MingW64等,使用POSIX中的API。

GNU C库和Linux

GNU C运行期库,是一种C函数库,是一些API集合,它们一般是已预先编译好,以二进制代码形式存在Linux类系统中。

GNU C基本上实现了POSIX兼容。

Linux头文件有多个,函数名称是小写。

源代码兼容和二进制兼容

源代码兼容

如果一个程序用到的库多个系统都一致,那么这个程序就可以在各个系统编译运行。

标准C库,POSIX都意在实现源代码级别兼容。

二进制兼容

C语言编译的代码是机器代码,一个操作系统编译的代码一般不能用于另一个操作系统。