C标准函数库
C标准函数库
一般
数据类型
字符类型
字符串
数学
文件输入/输出
日期/时间
本地化
内存分配
过程控制
信号
替代标记
杂项
查论编
C 标准函式库(C standard library,缩写:libc)是在C语言程式设计中,所有符合标准的头文件(header file)的集合,以及常用的函式库实作程序(如 I/O 输入输出和字串控制)。不像 COBOL、Fortran 和 PL/I等程式语言,在 C 语言的工作任务里不会包含嵌入的关键字,所以几乎所有的 C 语言程式都是由标准函式库的函式来建立的。
设计[编辑]
每一个函式的名称与特性会被写成一个电脑档案,这个档案就称为标头档案,但是实际的函式实作是被分存到函式库档案里。标头档的命名和领域是很常见的,但是函式库的组织架构也会因为不同的编译器而有所不同。标准函式库通常会随附在编译器上。因为 C 编译器常会提供一些额外的非 ANSI C 函式功能,所以某个随附在特定编译器上的标准函式库,对其他不同的编译器来说,是不相容的。
设计品质[编辑]
大多数 C 标准函式库设计得很好。有些少部分会为了商业优势和利益,把某些旧函式视同错误或提出警告。字串输入函式 gets() 及 scanf() 读取字串输入的使用是很多缓冲区溢位的原因,大多数的程式设计指南会建议避免使用。另一个较为奇特的函式是 strtok(),它原本是作为早期的词法分析用途,但是它非常容易出错(fragile),而且很难使用。
历史沿革[编辑]
ANSI C共包括15个标头档。1995年,Normative Addendum 1 (NA1)批准了3个头文件(iso646.h、wchar.h和wctype.h)增加到C标准函数库中。C99标准增加了6个头文件(complex.h、fenv.h、inttypes.h、stdbool.h、stdint.h和tgmath.h)。C11标准中又新增了5个头文件(stdalign.h、stdatomic.h、stdnoreturn.h、threads.h和uchar.h)。至此,C标准函数库共有29个头文件:
名字
源自
描述
包含断言,被用来在程序的调试版本中帮助检测逻辑错误以及其他类型的bug。
C99
一组操作复数的函数。
定义了一组函数,用来根据类型来给字符分类,或者进行大小写转换,而不关心所使用的字符集(通常是ASCII或其扩展字符集,也有EBCDIC)。
用来测试由库函数报的错误代码。
C99
定义了一组用来控制浮点数环境的函数。
定义了用于浮点数库特定实现的宏常量。
C99
定义精确的宽度整数类型。
NA1
定义几个等效于C中某些运算符的宏。用于使用ISO 646变体字符集进行编程。
定义了用于整数库特定实现属性的宏常量。
定义C语言本地化函数。
定义C语言数学函数。
定义了巨集setjmp和longjmp,在非局部跳转的时候使用。
定义C语言信号处理函数。
C11
用于查询和指定对象的数据结构对齐方式。
用于查询和指定对象的数据结构对齐方式。
C11
用于查询和指定对象的数据结构对齐方式。
C99
定义布尔数据类型。
定义了几个常见的类型与巨集。
C99
定义精确的宽度整数类型。
定义输入输出函数。
定义数值转换函数,伪随机数生成函数,动态内存分配函数,过程控制函数。
C11
用于指定非返回函数。
定义C语言字符串处理函数。
C99
定义类型通用数学函数。
C11
定义用于管理多个执行绪以及互斥体和条件变数的函数。
定义日期和时间处理函数。
C11
用于操作Unicode字元的类型和函数。
NA1
定义宽字串处理函数。
NA1
定义一组函数,用于按类型对宽字元进行分类或在大小写之间进行转换。
参考文献[编辑]
外部链接[编辑]
The C Standard Library:A detailed description of the header files
The C Library Reference Guide
Microsoft C Run-Time Libraries(页面存档备份,存于互联网档案馆) on MSDN
Coding Programmer Page(页面存档备份,存于互联网档案馆) [Coding Programmer Page / Library Reference and Examples] (english) ]
参见[编辑]
软件主题
计算机程序设计主题
GNU C 函式库
C++标准程式库
C POSIX library
查论编C语言
《C程序设计语言》(K&R C)
历史
ANSI C
C99
C11
C18
C23
嵌入式C语言
MISRA C
特性
Functions
头文件
字符串
语法
预处理器
数据类型
指针
函式库
glibc
C标准函式库
C POSIX library
Dietlibc
uClibc
Newlib
EGLIBC
Bionic
klibc
musl
编译器
Clang
GCC
MSVC
Intel C++
Borland Turbo C
LCC
Pelles C
PCC
TCC
C++/CLI
C++/CX
Watcom C/C++ 编译器
C与其他的程式语言
C与C++
兼容性
运算子
Pascal与C的比较(英语:Comparison of Pascal and C)
C to Java byte-code compiler
派生的程式语言
C++
C#
Objective-C
D语言
Alef(英语:Alef (programming language))
Limbo
Go
Vala
C/C++的整合开发环境
分类
查论编Linux内核组织内核
Linux基金会
Linux商标协会
林纳斯定律
塔能鲍姆-托瓦兹辩论
Linux-libre
Tux
SCO与Linux
Linaro
GNU GPL v2
menuconfig(英语:menuconfig)
支持架构
内核名称
对Linux的批评
支持
开发者
《Linux编程接口》
kernel.org
LKML
Linux会议
用户
Linux用户组(LUG)
技术调试
CRIU(英语:CRIU)
ftrace(英语:ftrace)
kdump
Linux内核oops
SystemTap(英语:SystemTap)
启动过程
vmlinux
System.map
dracut
initrd
initramfs
ABI
Linux标准规范
x32 ABI
API用户空间FS,守护进程
devfs
kernfs
debugfs(英语:debugfs)
procfs
sysfs
systemd
udev
Kmscon(英语:Kmscon)
封装库
C标准函式库
glibc
uClibc
Bionic
libhybris
dietlibc
EGLIBC
klibc
musl
Newlib
libcgroup
libdrm
libalsa
libevdev(英语:evdev)
内核部分系统调用接口
POSIX
ioctl
select
open
read
close
sync
...
Linux独有
futex
epoll
splice
dnotify(英语:dnotify)
inotify
readahead
...
内核内
ALSA
DRI
Video4Linux
New API(英语:New API)
Crypto API(英语:Crypto API (Linux))
内核组件
内核模块
BlueZ(英语:BlueZ)
cgroups
控制台
bcache(英语:bcache)
设备映射器
dm-cache(英语:dm-cache)
dm-crypt
DRM
EDAC
evdev(英语:evdev)
内核同页合并(KSM)
LIO
帧缓冲区(Framebuffer)
LVM
KMS驱动
Netfilter
Netlink
nftables
网络调度器
perf(英语:perf (Linux))
SLUB
zram
zswap
进程和I/O调度器:
O(n)调度器
O(1)调度器
完全公平排程器 (CFQ)
脑残排程器
Noop调度器
SCHED_DEADLINE(英语:SCHED_DEADLINE)
安全模块:AppArmor
Exec Shield(英语:Exec Shield)
grsecurity(英语:grsecurity)
PaX(英语:PaX)
seccomp(英语:seccomp)
SELinux
Smack
TOMOYO Linux(英语:TOMOYO Linux)
Linux PAM(英语:Linux PAM)
设备驱动
802.11
显卡
裸设备
initramfs
kexec
kGraft(英语:kGraft)
kpatch(英语:kpatch)
Ksplice
变种
主线
Linux内核
高性能计算
INK
计算节点Linux
SLURM
实时计算
RTLinux?
RTAI(英语:RTAI)
Xenomai
电信级Linux
无MMU
μClinux
PSXLinux(英语:PSXLinux)
DSLinux
虚拟化
Hypervisor
KVM
Xen
操作系统级虚拟化
Linux-VServer(英语:Linux-VServer)
Lguest(英语:Lguest)
LXC
OpenVZ
其它
L4Linux(英语:L4Linux)
ELinOS(英语:ELinOS)
用户模式Linux
MkLinux(英语:MkLinux)
coLinux
采用使用范围
桌面
嵌入式
游戏
瘦客户端:
LTSP
Thinstation(英语:Thinstation)
服务器:
LAMP
LYME/LYCE
设备
采用者
Linux采用者列表
GENIVI联盟
Linux专有软件
人物
乔纳·贝肯
乔纳森·科比特
艾伦·考克斯
乔恩·霍尔
本杰明·马可·希尔
迈克尔·凯利斯克
康恩·科里瓦斯
葛雷格·克罗哈曼
大卫·米勒
英格·蒙内
安德鲁·莫顿
伊恩·默多克
布鲁斯·佩伦斯
丹尼尔·罗宾斯
拉斯蒂·拉塞尔
林纳斯·托瓦兹
曹子德
分类
共享资源
教科书
学院
主题