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专有软件

人物

乔纳·贝肯

乔纳森·科比特

艾伦·考克斯

乔恩·霍尔

本杰明·马可·希尔

迈克尔·凯利斯克

康恩·科里瓦斯

葛雷格·克罗哈曼

大卫·米勒

英格·蒙内

安德鲁·莫顿

伊恩·默多克

布鲁斯·佩伦斯

丹尼尔·罗宾斯

拉斯蒂·拉塞尔

林纳斯·托瓦兹

曹子德

分类

共享资源

教科书

学院

主题