C语言库总结

内容来自cppreference.com

C语言保留字

紫色表示C99标准化、无色表示基础保留字、蓝色表示C90

int

short

long

double

float

char

if

else

for

while

do

goto

switch

case

static

struct

emun

union

typedef

return

break

continue

default

extern

const

void

signed

sizeof

register

unsigned

restrict

volatile

inline

_Alignas

_Alignof

_Atomic

_bool

_Complex

_Generic

_Imaginary

_Noreturn

_Static_assert

_Thread_local

volatile

C语言库

assert.h

ctype.h

errno.h

float.h

limits.h

locale.h

math.h

setjmp.h

signal.h

stdarg.h

stddef.h

stdio.h

stdlib.h

string.h

time.h

ios646.h

wchar.h

wctype.h

complex.h

fenv.h

inttypes.h

stdbool.h

stdint.h

tgmath.h

stdalign.h

stdatomic.h

stdnoreturn.h

uchar.h

threads.h

C90

assert.h

 主要是用于判断当前逻辑是否正常,如果不正常则将报错。

定义于头文件 

assert

若用户指定的条件非true,则异常终止程序。可以在发行版本禁用。

(宏函数)

static_assert

(C11)

若常量表达式为假则发布编译诊断

(关键词宏)

ctypet.h

主要是用于判断当前字符时哪种类型(例如是否是数组,是否是字母等)

字符分类

定义于头文件 

isalnum

检查一个字符是否是字母或数字

(函数)

isalpha

检查一个字符是否是英文字母

(函数)

islower

检查一个字符是否是小写字母

(函数)

isupper

检查一个字符是否是大写字母

(函数)

isdigit

检查字符是否为数字

(函数)

isxdigit

检查一个字符是否是十六进制的字符

(函数)

iscntrl

检查一个字符是否是控制字符

(函数)

isgraph

检查一个字符是否是可显示的字符

(函数)

isspace

检查一个字符是否是空白字符

(函数)

isblank

(C99)

检查一个字符是否是空格字符

(函数)

isprint

检查一个字符是否是可打印字符

(函数)

ispunct

检查一个字符是否是一个标点符号

(函数)

字符操作

tolower

将字符转换成小写

(函数)

toupper

将字符转换成大写

(函数)

errno.h

定义于头文件 

errno

展开成 POSIX 兼容的线程局域错误编号变量

(宏变量)

E2BIG, EACCES, ..., EXDEV

标准 POSIX 兼容的错误条件宏

(宏常量)

limits.h

BOOL_WIDTH

(C23)

_Bool 的位宽

(宏常量)

CHAR_BIT

字节的位数

(宏常量)

CHAR_WIDTH

(C23)

char 的位宽,同 CHAR_BIT

(宏常量)

MB_LEN_MAX

多字节字符的最大字节数

(宏常量)

CHAR_MIN

char 的最小值

(宏常量)

CHAR_MAX

char 的最大值

(宏常量)

SCHAR_WIDTHSHRT_WIDTHINT_WIDTHLONG_WIDTHLLONG_WIDTH

(C23)(C23)(C23)(C23)(C23)

分别为 signed charshortintlong 及 long long 的位宽

(宏常量)

SCHAR_MINSHRT_MININT_MINLONG_MINLLONG_MIN

(C99)

分别为 signed charshortintlong 及 long long 的最小值

(宏常量)

SCHAR_MAXSHRT_MAXINT_MAXLONG_MAXLLONG_MAX

(C99)

分别为 signed charshortintlong 及 long long 的最大值

(宏常量)

UCHAR_WIDTHUSHRT_WIDTHUINT_WIDTHULONG_WIDTHULLONG_WIDTH

(C23)(C23)(C23)(C23)(C23)

分别为 unsigned charunsigned shortunsigned intunsigned long 及 unsigned long long 的位宽

(宏常量)

UCHAR_MAXUSHRT_MAXUINT_MAXULONG_MAXULLONG_MAX

(C99)

分别为 unsigned charunsigned shortunsigned int

unsigned long 及 unsigned long long 的最大值

(宏常量)

locale.h

定义于头文件 

setlocale

获取和设置当前 C 本地环境

(函数)

localeconv

查询当前本地环境的数值及货币格式化细节

(函数)

lconv

localeconv 所返回的格式化细节

(结构体)

本地环境类别

LC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIME

setlocale 所用的本地环境类别

math.h

定义于头文件 

基本运算

fabs

fabsf

fabsl

(C99)(C99)

计算浮点值的绝对值( |x||x| )

(函数)

fmodfmodffmodl

(C99)(C99)

计算浮点除法运算的余数

(函数)

remainderremainderfremainderl

(C99)(C99)(C99)

计算浮点除法运算的带符号余数

(函数)

remquoremquofremquol

(C99)(C99)(C99)

计算除法运算的带符号余数,以及商的后三位

(函数)

fmafmaffmal

(C99)(C99)(C99)

计算结合的乘加运算

(函数)

fmaxfmaxffmaxl

(C99)(C99)(C99)

确定两个浮点值的较大者

(函数)

fminfminffminl

(C99)(C99)(C99)

确定两个浮点值的较小者

(函数)

fdimfdimffdiml

(C99)(C99)(C99)

确定两个浮点值的非负数差( max(0,x−y)max(0,x−y) )

(函数)

nannanfnanl

(C99)(C99)(C99)

返回 NaN (非数)

(函数)

指数函数

expexpfexpl

(C99)(C99)

计算 e 的给定次幂 ( exex )

(函数)

exp2exp2fexp2l

(C99)(C99)(C99)

计算 2 的给定次幂( 2x2x )

(函数)

expm1expm1fexpm1l

(C99)(C99)(C99)

计算 e 的给定次幂减一( ex−1ex−1 )

(函数)

loglogflogl

(C99)(C99)

计算自然对数(底为 e )( lnxln⁡x )

(函数)

log10log10flog10l

(C99)(C99)

计算常用对数 (底为 10 )( log10xlog10⁡x )

(函数)

log2log2flog2l

(C99)(C99)(C99)

计算底为 2 的对数( log2xlog2⁡x )

(函数)

log1plog1pflog1pl

(C99)(C99)(C99)

计算给定数加 1 的自然对数(底为 e )( ln(1+x)ln⁡(1+x) )

(函数)

幂函数

powpowfpowl

(C99)(C99)

计算一个数的给定次幂( xyxy )

(函数)

sqrtsqrtfsqrtl

(C99)(C99)

计算平方根( √xx )

(函数)

cbrtcbrtfcbrtl

(C99)(C99)(C99)

计算立方根( 3√xx3 )

(函数)

hypothypotfhypotl

(C99)(C99)(C99)

计算两个给定数平方和的平方根 ( √x2+y2x2+y2 )

(函数)

三角函数

sinsinfsinl

(C99)(C99)

计算正弦( sinxsin⁡x )

(函数)

coscosfcosl

(C99)(C99)

计算余弦( cosxcos⁡x )

(函数)

tantanftanl

(C99)(C99)

计算正切( tanxtan⁡x )

(函数)

asinasinfasinl

(C99)(C99)

计算反正弦( arcsinxarcsin⁡x )

(函数)

acosacosfacosl

(C99)(C99)

计算反余弦( arccosxarccos⁡x )

(函数)

atanatanfatanl

(C99)(C99)

计算反正切( arctanxarctan⁡x )

(函数)

atan2atan2fatan2l

(C99)(C99)

计算反正切,以符号确定象限

(函数)

双曲函数

sinhsinhfsinhl

(C99)(C99)

计算双曲正弦( sinhxsinh⁡x )

(函数)

coshcoshfcoshl

(C99)(C99)

计算双曲余弦( coshxcosh⁡x )

(函数)

tanhtanhftanhl

(C99)(C99)

计算双曲正切( tanhxtanh⁡x )

(函数)

asinhasinhfasinhl

(C99)(C99)(C99)

计算反双曲正弦( arsinhxarsinh⁡x )

(函数)

acoshacoshfacoshl

(C99)(C99)(C99)

计算反双曲余弦( arcoshxarcosh⁡x )

(函数)

atanhatanhfatanhl

(C99)(C99)(C99)

计算反双曲正切( artanhxartanh⁡x )

(函数)

误差及伽马函数

erferfferfl

(C99)(C99)(C99)

计算误差函数

(函数)

erfcerfcferfcl

(C99)(C99)(C99)

计算补误差函数

(函数)

tgammatgammaftgammal

(C99)(C99)(C99)

计算伽马函数

(函数)

lgammalgammaflgammal

(C99)(C99)(C99)

计算伽马函数的自然对数(底为 e )

(函数)

临近整数的浮点运算

ceilceilfceill

(C99)(C99)

计算不小于给定值的最小整数

(函数)

floorfloorffloorl

(C99)(C99)

计算不大于给定值的最大整数

(函数)

trunctruncftruncl

(C99)(C99)(C99)

取整到绝对值不大于给定值的最接近整数

(函数)

roundroundfroundllroundlroundflroundllroundllroundfllroundl

(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)

取整到最接近的整数,在相邻整数正中间时取远离零的数

(函数)

nearbyintnearbyintfnearbyintl

(C99)(C99)(C99)

用当前舍入模式取整到整数

(函数)

rintrintfrintllrintlrintflrintlllrintllrintfllrintl

(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)

使用当前舍入模式取整到整数,若结果有误则产生异常

(函数)

浮点数操作函数

frexpfrexpffrexpl

(C99)(C99)

将数拆分成有效数字和 2 的幂次

(函数)

ldexpldexpfldexpl

(C99)(C99)

将数乘以 2 的幂

(函数)

modfmodffmodfl

(C99)(C99)

把一个数拆分成整数和小数部分

(函数)

scalbnscalbnfscalbnlscalblnscalblnfscalblnl

(C99)(C99)(C99)(C99)(C99)(C99)

高效计算一个数乘 FLT_RADIX 的幂

(函数)

ilogbilogbfilogbl

(C99)(C99)(C99)

提取给定数的指数(结果为整数)

(函数)

logblogbflogbl

(C99)(C99)(C99)

提取给定数的指数(结果为浮点数)

(函数)

nextafternextafterfnextafterlnexttowardnexttowardfnexttowardl

(C99)(C99)(C99)(C99)(C99)(C99)

确定到给定值方向的下一个可表示的浮点数值

(函数)

copysigncopysignfcopysignl

(C99)(C99)(C99)

从一个给定值的绝对值和另一个给定值的符号产生值

(函数)

分类及比较

fpclassify

(C99)

对给定的浮点值分类

(宏函数)

isfinite

(C99)

检查给定数是否具有有限值

(宏函数)

isinf

(C99)

检查给定数是否是无穷大

(宏函数)

isnan

(C99)

检查给定数是否为 NaN

(宏函数)

isnormal

(C99)

检查给定数是否正规

(宏函数)

signbit

(C99)

检查给定数是不是负数

(宏函数)

isgreater

(C99)

检查第一个浮点参数是否大于第二个

(宏函数)

isgreaterequal

(C99)

检查第一个浮点参数是否大于等于第二个

(宏函数)

isless

(C99)

检查第一个浮点参数是否小于第二个

(宏函数)

islessequal

(C99)

检查第一个浮点参数是否小于或等于第二个

(宏函数)

islessgreater

(C99)

检查第一个浮点参数是否小于或大于第二个

(宏函数)

isunordered

(C99)

检查两个浮点数值是否无序

(宏函数)

宏常量

定义于头文件 

HUGE_VALFHUGE_VALHUGE_VALL

(C99)(C99)

分别指示过大而无法以 float 、 double 和 long double 表示的值(无穷大)

(宏常量)

INFINITY

(C99)

求值为正无穷大或保证溢出 float 的值

(宏常量)

NAN

(C99)

求值为 float 类型的安静 NaN

(宏常量)

FP_FAST_FMAFFP_FAST_FMAFP_FAST_FMAL

(C99)(C99)(C99)

指示 fma 函数与运算数的一次乘法和一次加法相比,执行速度相当或更快

(宏常量)

FP_ILOGB0FP_ILOGBNAN

(C99)(C99)

分别求值为当 x 为 0 或 NaN 时的 ilogb(x)

(宏常量)

math_errhandlingMATH_ERRNOMATH_ERREXCEPT

(C99)(C99)(C99)

定义用于常用数学函数的错误处理机制

(宏常量)

分类

FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN

(C99)(C99)(C99)(C99)(C99)

指示浮点数类别

(宏常量)

 

setjmp.h

非局部跳转

定义于头文件 

setjmp

保存环境

(宏函数)

longjmp

跳转到指定位置

(函数)

类型

jmp_buf

执行环境类型

(typedef)

signal.h

定义于头文件 

signal

为特定的信号设置信号处理函数

(函数)

raise

运行特定信号的信号处理函数

(函数)

sig_atomic_t

用于从异步信号处理函数访问原子实体的整数类型

(typedef)

SIG_DFLSIG_IGN

定义信号处理策略

(宏常量)

SIG_ERR

遇到错误

(宏常量)

常量

解释

SIGTERM

发送给程序的终止请求

SIGSEGV

非法内存访问(段错误)

SIGINT

外部中断,通常为用户所发动

SIGILL

非法程序映像,例如非法指令

SIGABRT

异常终止条件,例如 abort() 所起始的

SIGFPE

错误的算术运算,如除以零

需要注意的是不同机构,信号是不一样的

stdarg.h

va_start

令函数得以访问可变参数

(宏函数)

va_arg

访问下一个函数可变参数

(宏函数)

va_copy

(C99)

创造函数可变参数的副本

(宏函数)

va_end

结束函数可变参数的行程

(宏函数)

类型

va_list

保有 va_start 、 va_arg 、 va_end 及 va_copy 所需信息

(typedef)

stddef.h

额外基本类型及便利宏

定义于头文件 

size_t

sizeof 运算符返回的无符号整数类型

(typedef)

ptrdiff_t

两个指针相减返回的有符号整数类型

(typedef)

NULL

实现定义的空指针常量

(宏常量)

max_align_t

(C11)

对齐要求不小于任何其他标量类型的类型

(typedef)

offsetof

从指定结构体类型的起始到指定成员的字节位移

(宏函数)

stdlib.h

动态内存管理

函数

malloc

分配内存

(函数)

calloc

分配并清零内存

(函数)

realloc

扩充之前分配的内存块

(函数)

free

归还之前分配的内存

(函数)

aligned_alloc

(C11)

分配对齐的内存

(函数)

终止程序

下列函数管理程序终止和资源清理。

定义于头文件 

abort

引发非正常的程序终止(不清理)

(函数)

exit

引发正常的程序终止并清理

(函数)

quick_exit

(C11)

引发正常的程序终止但不完全清理

(函数)

_Exit

(C99)

引发正常的程序终止但不清理

(函数)

atexit

注册一个要在调用 exit() 时调用的函数

(函数)

at_quick_exit

(C11)

注册要在调用 quick_exit 时调用的函数

(函数)

EXIT_SUCCESSEXIT_FAILURE

表示程序的执行结果

(宏常量)

访问环境

system

调用宿主环境的命令处理器

(函数)

getenvgetenv_s

(C11)

访问环境变量列表

(函数)

 

转换成数值格式

定义于头文件 

atof

将字节字符串转换成浮点值

(函数)

atoi

atol

atoll

(C99)

将字节字符串转换成整数值

(函数)

strtol

strtoll

(C99)

将字节字符串转换成整数值

(函数)

strtoul

strtoull

(C99)

将字节字符串转换成无符号整数值

(函数)

strtof

strtod

strtold

(C99)(C99)

将字节字符串转换成浮点值

(函数)

 

伪随机数生成

 

定义于头文件 

rand

产生一个伪随机数

(函数)

srand

播种伪随机数生成器

(函数)

RAND_MAX

rand() 生成的最大可能值

(宏常量)

算法

 

定义于头文件 

qsortqsort_s

(C11)

对一个范围内的拥有一定未指定类型的元素排序

(函数)

bsearchbsearch_s

(C11)

在未指定类型的数组中搜索一个元素

(函数)

string.h

字符串操作

strcpy

strcpy_s

(C11)

复制一个字符串给另一个

(函数)

strncpy

strncpy_s

(C11)

从一个字符串复制一定数量的字符到另一个

(函数)

strcat

strcat_s

(C11)

连接两个字符串

(函数)

strncat

strncat_s

(C11)

连接两个字符串的一定数量字符

(函数)

strxfrm

变换字符串,使得 strcmp 会产生同 strcoll 的结果

(函数)

strdup

(C23)

分配字符串的副本

(函数)

strndup

(C23)

分配拥有指定大小的字符串副本

(函数)

字符串检验

定义于头文件 

strlen

strnlen_s

(C11)

返回给定字符串的长度

(函数)

strcmp

比较两个字符串

(函数)

strncmp

比较两个字符串的一定数量字符

(函数)

strcoll

比较两个字符串,根据当前本地环境

(函数)

strchr

查找字符的首次出现

(函数)

strrchr

查找字符的最后一次出现

(函数)

strspn

返回由另一个字符串中的字符分割的最大起始段长度

(函数)

strcspn

返回另一个字符串所不具有的字符分割的最大起始段长度

(函数)

strpbrk

查找一个字符串中的任意一个字符在另一个字符串中的首个位置

(函数)

strstr

查找子串字符的首次出现

(函数)

strtok

strtok_s

(C11)

查找字节字符串中的下一个记号

(函数)

字符数组操作

定义于头文件 

memchr

在数组中搜索字符的首次出现

(函数)

memcmp

比较两块缓冲区

(函数)

memset

memset_s

(C11)

以字符填充缓冲区

(函数)

memcpy

(C11)

将一个缓冲区复制到另一个

(函数)

memmove

memmove_s

(C11)

将一个缓冲区移动到另一个

(函数)

memccpy

(C23)

复制一个缓冲区到另一个,在指定的分隔符后停止

(函数)

杂项

定义于头文件 

strerror

strerror_s

strerrorlen_s

(C11)(C11)

返回给定错误码的文本版本

(函数

time.h

 

 

函数

时间操纵

定义于头文件 

difftime

计算时间差

(函数)

time

返回纪元开始经过的当前系统日历时间

(函数)

clock

返回未加工的程序启动时开始经过的处理器时间

(函数)

timespec_get

(C11)

返回基于给定时间基底的日历时间

(函数)

timespec_getres

(C23)

返回基于给定时间基底的日历时间的分辨率

(函数)

格式转换

定义于头文件 

asctime

asctime_r

asctime_s

(C23)(C11)

将 struct tm 对象转换成文本表示

(函数)

ctime

ctime_r

ctime_s

(C23)(C11)

将 struct time_t 对象转换成文本表示

(函数)

strftime

将 struct tm 对象转换成自定义文本表示

(函数)

定义于头文件 

wcsftime

(C95)

将 struct tm 对象转换成自定义宽字符文本表示

(函数)

定义于头文件 

gmtime

gmtime_r

gmtime_s

(C23)(C11)

将从纪元开始的时间转换成以协调世界时(UTC)表示的日历时间

(函数)

localtime

localtime

_rlocaltime_s

(C23)(C11)

将从纪元开始的时间转换成以本地时间表示的日历时间

(函数)

mktime

将日历时间转换成纪元开始经过的时间

(函数)

常量

定义于头文件 

CLOCKS_PER_SEC

处理器每秒的时间计数

(宏常量)

类型

定义于头文件 

tm

日历时间类型

(结构体)

time_t

从纪元开始的日历时间类型

(typedef)

clock_t

从时点开始的处理器时间类型

(typedef)

timespec

(C11)

单位为秒和纳秒的时间

(结构体)

stdio.h

类型

定义于头文件 

FILE

对象类型,能够保存控制 C I/O 流所需的全部信息

(typedef)

fpos_t

非数组完整对象类型,足以唯一指定文件的位置和多字节剖析状态

(typedef)

预定义标准流

定义于头文件 

stdinstdoutstderr

与标准输入流关联的 FILE* 类型表达式

与标准输出流关联的 FILE* 类型表达式

与标准错误输出流关联的 FILE* 类型表达式

(宏常量)

函数

文件访问

定义于头文件 

fopenfopen_s

(C11)

打开文件

(函数)

freopenfreopen_s

(C11)

以不同名称打开既存的文件流

(函数)

fclose

关闭文件

(函数)

fflush

将输出流与实际文件同步

(函数)

setbuf

为文件流设置缓冲区

(函数)

setvbuf

为文件流设置缓冲区和其大小

(函数)

直接输入/输出

定义于头文件 

fread

从文件读取

(函数)

fwrite

写入到文件

(函数)

无格式输入/输出

窄字符

定义于头文件 

fgetcgetc

从文件流获取一个字符

(函数)

fgets

从文件流获取一个字符串

(函数)

fputcputc

将一个字符写入文件流

(函数)

fputs

将一个字符串写入文件流

(函数)

getchar

从 stdin 读取一个字符

(函数)

getsgets_s

(C11 中移除)(C11)

从 stdin 读取一个字符串

(函数)

putchar

将一个字符写入 stdout

(函数)

puts

将一个字符串写入 stdout

(函数)

ungetc

将一个字符送回文件流

(函数)

有格式输入/输出

窄字符

定义于头文件 

scanffscanfsscanfscanf_sfscanf_ssscanf_s

(C11)(C11)(C11)

stdin、文件流或缓冲区读取格式化输入

(函数)

vscanfvfscanfvsscanfvscanf_svfscanf_svsscanf_s

(C99)(C99)(C99)(C11)(C11)(C11)

从 stdin 、文件流或缓冲区读取格式化输入

使用可变参数列表

(函数)

printffprintfsprintfsnprintfprintf_sfprintf_ssprintf_ssnprintf_s

(C99)(C11)(C11)(C11)(C11)

打印格式化输出到 stdout 、文件流或缓冲区

(函数)

vprintfvfprintfvsprintfvsnprintfvprintf_svfprintf_svsprintf_svsnprintf_s

(C99)(C11)(C11)(C11)(C11)

打印格式化输出到stdout、文件流或缓冲区

使用可变参数列表

(函数)

文件位置

定义于头文件 

ftell

返回当前的文件位置指示值

(函数)

fgetpos

获取文件位置指示器

(函数)

fseek

将文件位置指示符移动到文件中的指定位置

(函数)

fsetpos

将文件位置指示器移动到文件中的指定位置

(函数)

rewind

将文件位置指示器移动到文件首

(函数)

错误处理

定义于头文件 

clearerr

清除错误

(函数)

feof

检查文件结尾

(函数)

ferror

检查文件错误

(函数)

perror

显示对应当前错误的字符串到 stderr

(函数)

文件操作

定义于头文件 

remove

删除文件

(函数)

rename

重命名文件

(函数)

tmpfiletmpfile_s

(C11)

返回指向临时文件的指针

(函数)

tmpnamtmpnam_s

(C11)

返回唯一的文件名

(函数)

宏常量

定义于头文件 

EOF

int 类型的负值整数常量表达式

(宏常量)

FOPEN_MAX

能同时打开的文件数

(宏常量)

FILENAME_MAX

保有最长受支持文件名所需的 char 数组大小

(宏常量)

BUFSIZ

setbuf() 所用的缓冲区大小

(宏常量)

_IOFBF_IOLBF_IONBF

指示全缓冲 I/O 的 setvbuf() 参数

指示行缓冲 I/O 的 setvbuf() 参数

指示无缓冲 I/O 的 setvbuf() 参数

(宏常量)

SEEK_SETSEEK_CURSEEK_END

指示从文件首开始寻位的 fseek() 参数

指示从文件当前位置开始寻位的 fseek() 参数

指示从文件尾开始寻位的 fseek() 参数

(宏常量)

TMP_MAXTMP_MAX_S

(C11)

tmpnam 所能生成的最大独有文件数

tmpnam_s 所能生成的最大独有文件数

(宏常量)

L_tmpnamL_tmpnam_s

(C11)

保有 tmpnam 结果所需的 char 数组大小

保有 tmpnam_s 结果所需的 char 数组大小

(宏常量)

 

 

C95:

iso646.h

有使用非 ISO 646 字符的替用拼写,作为宏定义于  :

定义于头文件 

基本

替用

&&

and

(运算符宏)

&=

and_eq

(运算符宏)

&

bitand

(运算符宏)

|

bitor

(运算符宏)

~

compl

(运算符宏)

!

not

(运算符宏)

!=

not_eq

(运算符宏)

||

or

(运算符宏)

|=

or_eq

(运算符宏)

^

xor

(运算符宏)

^=

xor_eq

(运算符宏)

字符 & 及 ! 在 ISO-646 下不变,但仍然为这些运算符提供替用写法,以使用这些字符适应更加受限的历史字符集。

没有等于运算符的替用拼写 == ,因为字符 = 已在所有受支持字符集中存在。

替用记号(C95)

下列替用记号是核心语言的一部分,而且在语言的所有方面,每个替用记号表现准确等同于其基本记号,除了其拼写(字符串化运算符可令拼写可见)。双字另种记号有时被称为“双标符”。

基本

替用

{

<%

}

%>

[

<:

]

:>

#

%:

##

%:%:

三标符

下列三字符组(三标符)在注释前分析并在字符串字面量中得到辨认,而且每个三标符的出现会被对应的基本字符取代:

基本

三标符

{

??<

}

??>

[

??(

]

??)

#

??=

\

??/

^

??'

|

??!

~

??-

因为三标符在早期处理,故如 // Will the next line be executed?????/ 的注释可以有效地注释掉下一行,且如 "What's going on??!" 的字符串字面量被分析成 "What's going on|" 。

wctype.h

定义于头文件 

iswalnum

(C95)

检查宽字符是否为字母或数字

(函数)

iswalpha

(C95)

检查宽字符是否为字母

(函数)

iswlower

(C95)

检查宽字符是否为小写

(函数)

iswupper

(C95)

检查宽字符是否为大写

(函数)

iswdigit

(C95)

检查宽字符是否为数字

(函数)

iswxdigit

(C95)

检查宽字符是否为十六进制字符

(函数)

iswcntrl

(C95)

检查宽字符是否为控制字符

(函数)

iswgraph

(C95)

检查宽字符是否为图形字符

(函数)

iswspace

(C95)

检查宽字符是否为空白符

(函数)

iswblank

(C99)

检查宽字符是否为空格

(函数)

iswprint

(C95)

检查宽字符是否为打印字符

(函数)

iswpunct

(C95)

检查宽字符是否为标点符号

(函数)

iswctype

(C95)

按照指定的 LC_CTYPE 类别分类宽字符

(函数)

wctype

(C95)

查找当前 C 本地环境中的字符分类类别

(函数)

字符操作

定义于头文件 

towlower

(C95)

将宽字符转换为小写

(函数)

towupper

(C95)

将宽字符转换为大写

(函数)

towctrans

(C95)

按照指定的 LC_TYPE 映射分类进行字符映射

(函数)

wctrans

(C95)

查找当前 C 本地环境中的字符映射类别

 

wchar.h

定义于头文件 

wcstolwcstoll

(C95)(C99)

将宽字符串转换成整数值

(函数)

wcstoulwcstoull

(C95)(C99)

将宽字符串转换成无符号整数值

(函数)

wcstofwcstodwcstold

(C99)(C95)(C99)

将宽字符串转换成浮点值

(函数)

定义于头文件 

wcstoimaxwcstoumax

(C99)(C99)

将宽字符串转换成 intmax_t 或 uintmax_t

(函数)

字符串操作

定义于头文件 

wcscpywcscpy_s

(C95)(C11)

将一个宽字符串复制给另一个

(函数)

wcsncpywcsncpy_s

(C95)(C11)

将一定量的宽字符从一个字符串复制到另一个

(函数)

wcscatwcscat_s

(C95)(C11)

将一个宽字符串的副本后附于另一个

(函数)

wcsncatwcsncat_s

(C95)(C11)

将一定量宽字符串从一个宽字符串后附到另一个

(函数)

wcsxfrm

(C95)

变换宽字符串,使得 wcscmp 会产生与 wcscoll 相同的结果

(函数)

字符串检验

定义于头文件 

wcslenwcsnlen_s

(C95)(C11)

返回宽字符串的长度

(函数)

wcscmp

(C95)

比较两个宽字符串

(函数)

wcsncmp

(C95)

比较来自两个宽字符串的一定量字符

(函数)

wcscoll

(C95)

根据当前本地环境比较两个宽字符串

(函数)

wcschr

(C95)

查找宽字符在宽字符串中的首次出现

(函数)

wcsrchr

(C95)

查找宽字符在宽字符串中的最后一次出现

(函数)

wcsspn

(C95)

返回仅由另一个宽字符串中出现的宽字符分隔的最长首段长度

(函数)

wcscspn

(C95)

返回仅由出现于另一个宽字符串中的宽字符分隔的最长首段长度

(函数)

wcspbrk

(C95)

查找一个宽字符串中的任何字符在另一个宽字符串中的首个位置

(函数)

wcsstr

(C95)

查找一个宽字符串在另一个宽字符串中的首次出现

(函数)

wcstokwcstok_s

(C95)(C11)

查找宽字符串中的下一个记号

(函数)

宽字符数组操作

定义于头文件 

wmemcpywmemcpy_s

(C95)(C11)

在两个不重叠的数组间复制一定数量的宽字符

(函数)

wmemmovewmemmove_s

(C95)(C11)

在两个可能重叠的数组间复制一定数量的宽字符

(函数)

wmemcmp

(C95)

比较两个数组中一定数量的宽字符

(函数)

wmemchr

(C95)

在宽字符数组中查找宽字符的首次出现

(函数)

wmemset

(C95)

将给定的宽字符复制到宽字符数组的所有位置

(函数)

 

C99

complex.h

定义于头文件 

类型

imaginary

(C99)

虚数类型宏

(关键词宏)

complex

(C99)

复数类型宏

(关键词宏)

虚数常量

_Imaginary_I

(C99)

虚数单位常量 i

(宏常量)

_Complex_I

(C99)

复数单位常量 i

(宏常量)

I

(C99)

复数或虚数单位常量 i

(宏常量)

操作

CMPLXCMPLXFCMPLXL

(C11)(C11)(C11)

由实部和虚部构建复数

(宏函数)

crealcrealfcreall

(C99)(C99)(C99)

计算复数的实部

(函数)

cimagcimagfcimagl

(C99)(C99)(C99)

计算复数的虚部

(函数)

cabscabsfcabsl

(C99)(C99)(C99)

计算复数的模(绝对值)

(函数)

cargcargfcargl

(C99)(C99)(C99)

计算复数的辐角

(函数)

conjconjfconjl

(C99)(C99)(C99)

计算共轭复数

(函数)

cprojcprojfcprojl

(C99)(C99)(C99)

计算黎曼球上的投影

(函数)

指数函数

cexpcexpfcexpl

(C99)(C99)(C99)

计算复数的 e 底指数

(函数)

clogclogfclogl

(C99)(C99)(C99)

计算复数的自然对数

(函数)

幂函数

cpowcpowfcpowl

(C99)(C99)(C99)

计算复数幂函数

(函数)

csqrtcsqrtfcsqrtl

(C99)(C99)(C99)

计算复数平方根

(函数)

三角函数

csincsinfcsinl

(C99)(C99)(C99)

计算复数正弦

(函数)

ccosccosfccosl

(C99)(C99)(C99)

计算复数余弦

(函数)

ctanctanfctanl

(C99)(C99)(C99)

计算复数正切

(函数)

casincasinfcasinl

(C99)(C99)(C99)

计算复数反正弦

(函数)

cacoscacosfcacosl

(C99)(C99)(C99)

计算复数反余弦

(函数)

catancatanfcatanl

(C99)(C99)(C99)

计算复数反正切

(函数)

双曲函数

csinhcsinhfcsinhl

(C99)(C99)(C99)

计算复数双曲正弦

(函数)

ccoshccoshfccoshl

(C99)(C99)(C99)

计算复双曲余弦

(函数)

ctanhctanhfctanhl

(C99)(C99)(C99)

计算复数双曲正切

(函数)

casinhcasinhfcasinhl

(C99)(C99)(C99)

计算复数反双曲正弦

(函数)

cacoshcacoshfcacoshl

(C99)(C99)(C99)

计算复数反双曲余弦

(函数)

catanhcatanhfcatanhl

(C99)(C99)(C99)

计算复数反双曲正切

(函数)

fenv.h

定义于头文件 

fenv_t

表示整体浮点环境的类型

fexcept_t

集中表示所有浮点异常状态标志的类型

函数

feclearexcept

(C99)

清除指定的浮点异常状态标志

(函数)

fetestexcept

(C99)

确认设置了哪些浮点异常状态标志

(函数)

feraiseexcept

(C99)

引发指定的浮点异常状态标志

(函数)

fegetexceptflagfesetexceptflag

(C99)(C99)

将指定的浮点异常状态标志从指定的浮点环境获取,再设置到指定浮点环境的操作。

(函数)

fegetroundfesetround

(C99)(C99)

获得或设置数字的舍入方向

(函数)

fegetenvfesetenv

(C99)(C99)

保存或恢复当前浮点环境,包括异常的标志和数字的舍弃模式

(函数)

feholdexcept

(C99)

保存当前环境的异常状态标志,再清除所有异常状态标志,并忽略所有未来错误

(函数)

feupdateenv

(C99)

恢复之前保存的浮点环境,并引发之前已经引发过的异常,使其存在于当前内存环境中

(函数)

FE_ALL_EXCEPTFE_DIVBYZEROFE_INEXACTFE_INVALIDFE_OVERFLOWFE_UNDERFLOW

(C99)

浮点异常

(宏常量)

FE_DOWNWARDFE_TONEARESTFE_TOWARDZEROFE_UPWARD

(C99)

浮点舍入方向

(宏常量)

FE_DFL_ENV

(C99)

默认浮点环境

(宏常量)

 

inttypes.h

定义于头文件 

fprintf 系列函数的格式常量

此处列出的每个 PRI 宏当且仅当实现定义对应的 typedef 名才得以定义。

int 或

unsigned int

的等价者

描述

数据类型的宏

[u]intx_t

[u]int_leastx_t

[u]int_fastx_t

[u]intmax_t

[u]intptr_t

d

有符号十进制整数值的输出

PRIdx

PRIdLEASTx

PRIdFASTx

PRIdMAX

PRIdPTR

i

PRIix

PRIiLEASTx

PRIiFASTx

PRIiMAX

PRIiPTR

u

无符号十进制整数值的输出

PRIux

PRIuLEASTx

PRIuFASTx

PRIuMAX

PRIuPTR

o

无符号八进制整数值的输出

PRIox

PRIoLEASTx

PRIoFASTx

PRIoMAX

PRIoPTR

x

无符号小写十六进制整数值的输出

PRIxx

PRIxLEASTx

PRIxFASTx

PRIxMAX

PRIxPTR

X

无符号大写十六进制整数值的输出

PRIXx

PRIXLEASTx

PRIXFASTx

PRIXMAX

PRIXPTR

fscanf 系列函数的格式常量

此处列出的每个 SCN 宏当且仅当实现定义对应的 typedef 名且拥有适合该类型的 fscanf 长度修饰符才得以定义。

int 或

unsigned int

的等价者

描述

数据类型的宏

[u]intx_t

[u]int_leastx_t

[u]int_fastx_t

[u]intmax_t

[u]intptr_t

d

有符号十进制整数值的输入

SCNdx

SCNdLEASTx

SCNdFASTx

SCNdMAX

SCNdPTR

i

有符号整数值的输入(以首个剖析的字符确定基底)

SCNix

SCNiLEASTx

SCNiFASTx

SCNiMAX

SCNiPTR

u

无符号十进制整数值的输入

SCNux

SCNuLEASTx

SCNuFASTx

SCNuMAX

SCNuPTR

o

无符号八进制整数值的输入

SCNox

SCNoLEASTx

SCNoFASTx

SCNoMAX

SCNoPTR

x

无符号十六进制值类型的输入

SCNxx

SCNxLEASTx

SCNxFASTx

SCNxMAX

SCNxPTR

 

stdbool.h

定义于头文件 

bool

(C99)

便利宏,展开成 _Bool

(关键词宏)

true

(C99)

展开成整数常量 1 (C23 前) ((_Bool)+1u) (C23 起)

(宏常量)

false

(C99)

展开成整数常量 0 (C23 前) ((_Bool)+0u) (C23 起)

(宏常量)

__bool_true_false_are_defined

(C99)

展开成整数常量 1

(宏常量)

stdint.h

类型

定义于头文件 

int8_tint16_tint32_tint64_t

(可选)

分别为宽度恰为 8、16、32 和 64 位的有符号整数类型

无填充位并对负值使用补码

(仅若实现支持该类型才提供)

(typedef)

int_fast8_tint_fast16_tint_fast32_tint_fast64_t

分别为宽度至少有 8、16、32 和 64 位的最快的有符号整数类型

(typedef)

int_least8_tint_least16_tint_least32_tint_least64_t

分别为宽度至少有 8、16、32 和 64 位的最小的有符号整数类型

(typedef)

intmax_t

最大宽度的有符号整数类型

(typedef)

intptr_t

(可选)

足以保有指针的有符号整数类型

(typedef)

uint8_tuint16_tuint32_tuint64_t

(可选)

宽度恰为 8、16、32 和 64 位的无符号整数类型

(仅若实现支持该类型才提供)

(typedef)

uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t

分别为宽度至少有 8、16、32 和 64 位的最快无符号整数类型

(typedef)

uint_least8_tuint_least16_tuint_least32_tuint_least64_t

分别为宽度至少有 8、16、32 和 64 位的最小无符号整数类型

(typedef)

uintmax_t

最大宽度的无符号整数类型

(typedef)

uintptr_t

(可选)

足以保有指针的无符号整数类型

(typedef)

实现可在 N 不是 8、 16、 32 或 64 时定义 typedef 名 intN_t、 int_fastN_t、 int_leastN_t、 uintN_t、 uint_fastN_t 及 uint_leastN_t 。形为 intN_t 的 typedef 名仅若实现支持有该宽度而无填充的整数类型才可以得以定义。从而 uint24_t 代表宽度准确地为 24 位的无符号整数类型。

下面列出的每个宏当且仅当实现定义对应的 typedef 名时才得以定义。宏 INTN_C 与 UINTN_C 分别对应 typedef 名 int_leastN_t 与 uint_leastN_t 。

宏常量

定义于头文件 

有符号整数:宽度

INT8_WIDTHINT16_WIDTHINT32_WIDTHINT64_WIDTH

(C23)(可选)

int8_t、int16_t、int32_t、int64_t 类型对象的位宽(准确地为 8、16、32、64)

(宏常量)

INT_FAST8_WIDTHINT_FAST16_WIDTHINT_FAST32_WIDTHINT_FAST64_WIDTH

(C23)

int_fast8_t、int_fast16_t、int_fast32_t、int_fast64_t 类型对象的位宽

(宏常量)

INT_LEAST8_WIDTHINT_LEAST16_WIDTHINT_LEAST32_WIDTHINT_LEAST64_WIDTH

(C23)

int_least8_t、int_least16_t、int_least32_t、int_least64_t 类型对象的位宽

(宏常量)

INTPTR_WIDTH

(C23)(可选)

intptr_t 类型对象的位宽

(宏常量)

INTMAX_WIDTH

(C23)

intmax_t 类型对象的位宽

(宏常量)

有符号整数:最小值

INT8_MININT16_MININT32_MININT64_MIN

(可选)

int8_t、int16_t、int32_t、int64_t 类型对象的最小值

(宏常量)

INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN

int_fast8_t、int_fast16_t、int_fast32_t、int_fast64_t 类型对象的最小值

(宏常量)

INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN

int_least8_t、int_least16_t、int_least32_t、int_least64_t 类型对象的最小值

(宏常量)

INTPTR_MIN

(可选)

intptr_t 类型对象的最小值

(宏常量)

INTMAX_MIN

intmax_t 类型对象的最小值

(宏常量)

有符号整数:最大值

INT8_MAXINT16_MAXINT32_MAXINT64_MAX

(可选)

int8_t、int16_t、int32_t、int64_t 类型对象的最大值

(宏常量)

INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX

int_fast8_t、int_fast16_t、int_fast32_t、int_fast64_t 类型对象的最大值

(宏常量)

INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX

int_least8_t、int_least16_t、int_least32_t、int_least64_t 类型对象的最大值

(宏常量)

INTPTR_MAX

(可选)

intptr_t 类型对象的最大值

(宏常量)

INTMAX_MAX

intmax_t 类型对象的最大值

(宏常量)

无符号整数:宽度

UINT8_WIDTHUINT16_WIDTHUINT32_WIDTHUINT64_WIDTH

(C23)(可选)

uint8_t、uint16_t、uint32_t、uint64_t 类型对象的位宽(准确地为 8、16、32、64)

(宏常量)

UINT_FAST8_WIDTHUINT_FAST16_WIDTHUINT_FAST32_WIDTHUINT_FAST64_WIDTH

(C23)

uint_fast8_t、uint_fast16_t、uint_fast32_t、uint_fast64_t 类型对象的位宽

(宏常量)

UINT_LEAST8_WIDTHUINT_LEAST16_WIDTHUINT_LEAST32_WIDTHUINT_LEAST64_WIDTH

(C23)

uint_least8_t、uint_least16_t、uint_least32_t、uint_least64_t 类型对象的位宽

(宏常量)

UINTPTR_WIDTH

(C23)(可选)

uintptr_t 类型对象的位宽

(宏常量)

UINTMAX_WIDTH

(C23)

uintmax_t 类型对象的位宽

(宏常量)

无符号整数:最大值

UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX

(可选)

uint8_t、uint16_t、uint32_t、uint64_t 类型对象的最大值

(宏常量)

UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX

uint_fast8_t、uint_fast16_t、uint_fast32_t、uint_fast64_t 类型对象的最大值

(宏常量)

UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX

uint_least8_t、uint_least16_t、uint_least32_t、uint_least64_t 类型对象的最大值

(宏常量)

UINTPTR_MAX

(可选)

uintptr_t 类型对象的最大值

(宏常量)

UINTMAX_MAX

uintmax_t 类型对象的最大值

(宏常量)

最小宽度整数常量的函数宏

定义于头文件 

INT8_CINT16_CINT32_CINT64_C

展开成拥有以其参数指定的值和类型分别为 int_least8_t 、 int_least16_t 、 int_least32_t 、 int_least64_t 的整数常量表达式

(宏函数)

INTMAX_C

展开成拥有以其参数指定的值和 intmax_t 类型的整数常量表达式

(宏函数)

UINT8_CUINT16_CUINT32_CUINT64_C

展开成拥有以其参数指定的值,类型分别为 uint_least8_t 、 uint_least16_t 、 uint_least32_t 、 uint_least64_t 的整数常量表达式

(宏函数)

UINTMAX_C

展开成拥有以其参数指定的值和 uintmax_t 类型的整数常量表达式

(宏函数)

#include
UINT64_C(0x123) // 可以展开成 0x123ULL 或 0x123UL

 

 

tgmath.h

泛型数学

  

头文件  包含头文件  及  ,并定义了几种泛型宏。这些宏会根据参数类型决定要调用的实际函数。

对于每个宏,在无后缀版函数中,所对应的实数类型为 double 的参数,即是所谓的泛型参数。(例如,pow的两个参数都是泛型参数,但scalbn只有第一个参数是泛型参数)

如下所述,使用  宏时,传递给泛型参数的参数类型,会决定宏所选择的参数。若参数的类型与所选函数的参数类型不兼容,则行为未定义。(例如,若将复数参数传入实数限定的 tgmath 宏: float complex fc; ceil(fc) 或 double complex dc; double d; fmax(dc, d) 就是未定义行为的例子)

注意:泛型宏在 C99 中曾以实现定义行为实现,但 C11 关键词 _Generic 使得以可移植方式实现这些宏成为可能。

复数/实数泛型宏

对于所有拥有实数及复数对应的函数,存在泛型宏,调用下列函数之一:

上述规则的一个例外是 fabs 宏(见下表)。

调用的函数按以下方式决定:

泛型宏如下所示:

泛型宏

实数函数变体

复数函数变体

 

float

double

long double

float

double

long double

fabs

fabsf

fabs

fabsl

cabsf

cabs

cabsl

exp

expf

exp

expl

cexpf

cexp

cexpl

log

logf

log

logl

clogf

clog

clogl

pow

powf

pow

powl

cpowf

cpow

cpowl

sqrt

sqrtf

sqrt

sqrtl

csqrtf

csqrt

csqrtl

sin

sinf

sin

sinl

csinf

csin

csinl

cos

cosf

cos

cosl

ccosf

ccos

ccosl

tan

tanf

tan

tanl

ctanf

ctan

ctanl

asin

asinf

asin

asinl

casinf

casin

casinl

acos

acosf

acos

acosl

cacosf

cacos

cacosl

atan

atanf

atan

atanl

catanf

catan

catanl

sinh

sinhf

sinh

sinhl

csinhf

csinh

csinhl

cosh

coshf

cosh

coshl

ccoshf

ccosh

ccoshl

tanh

tanhf

tanh

tanhl

ctanhf

ctanh

ctanhl

asinh

asinhf

asinh

asinhl

casinhf

casinh

casinhl

acosh

acoshf

acosh

acoshl

cacoshf

cacosh

cacoshl

atanh

atanhf

atanh

atanhl

catanhf

catanh

catanhl

实数限定函数

对于所有无复数对应的函数,除 modf 外都存在泛型宏 XXX ,它会调用实数函数变体的中的一种:

以下列方式确定调用的函数:

泛型宏

实数函数变体

 

float

double

long double

atan2

atan2f

atan2

atan2l

cbrt

cbrtf

cbrt

cbrtl

ceil

ceilf

ceil

ceill

copysign

copysignf

copysign

copysignl

erf

erff

erf

erfl

erfc

erfcf

erfc

erfcl

exp2

exp2f

exp2

exp2l

expm1

expm1f

expm1

expm1l

fdim

fdimf

fdim

fdiml

floor

floorf

floor

floorl

fma

fmaf

fma

fmal

fmax

fmaxf

fmax

fmaxl

fmin

fminf

fmin

fminl

fmod

fmodf

fmod

fmodl

frexp

frexpf

frexp

frexpl

hypot

hypotf

hypot

hypotl

ilogb

ilogbf

ilogb

ilogbl

ldexp

ldexpf

ldexp

ldexpl

lgamma

lgammaf

lgamma

lgammal

llrint

llrintf

llrint

llrintl

llround

llroundf

llround

llroundl

log10

log10f

log10

log10l

log1p

log1pf

log1p

log1pl

log2

log2f

log2

log2l

logb

logbf

logb

logbl

lrint

lrintf

lrint

lrintl

lround

lroundf

lround

lroundl

nearbyint

nearbyintf

nearbyint

nearbyintl

nextafter

nextafterf

nextafter

nextafterl

nexttoward

nexttowardf

nexttoward

nexttowardl

remainder

remainderf

remainder

remainderl

remquo

remquof

remquo

remquol

rint

rintf

rint

rintl

round

roundf

round

roundl

scalbln

scalblnf

scalbln

scalblnl

scalbn

scalbnf

scalbn

scalbnl

tgamma

tgammaf

tgamma

tgammal

trunc

truncf

trunc

truncl

复数限定函数

对于所有没有实数对应的复数函数,存在泛型宏 cXXX ,它会调用复数函数的变体:

调用的函数按以下方式决定:

泛型宏

复数函数变体

 

float

double

long double

carg

cargf

carg

cargl

conj

conjf

conj

conjl

creal

crealf

creal

creall

cimag

cimagf

cimag

cimagl

cproj

cprojf

cproj

cprojl

  • 若泛型参数的任一参数为实数、复数或虚数,则调用适当的复数函数。
  • float complex 变体 cXXXf
  • double complex 变体 cXXX
  • long double complex 变体 cXXXl
  • 若泛型参数的任一参数为 long double ,则调用 long double 变体。否则,若泛型参数的任一参数是 double ,则调用 double 变体。否则调用 float 变体。
  • float 变体 XXXf
  • double 变体 XXX
  • long double 变体 XXXl
  • 若泛型参数的任一参数为虚数,则行为会在每个函数参考页面上各自指定。(具体而言, sin 、 cos 、 tan 、 sinh 、 cosh 、 tanh 、 asin 、 atan 、 asinh 及 atanh 调用实数函数, sin 、 cos 、 tan 、 sinh 、 tanh 、 asin 、 atan 、 asinh 及 atanh 的返回类型是虚数,而 cosh 与 cosh 的返回类型是实数)
  • 若泛型参数的任一参数为复数,则复数函数会得到调用,否则会调用实数函数。
  • 若泛型参数的任一参数为 long double ,则调用 long double 变体。否则,若任一参数是 double 或整数,则调用 double 变体。否则会调用 float 变体。
  • 实数函数:
    • float 变体 XXXf
    • double 变体 XXX
    • long double 变体 XXXl
  • 复数函数:
    • float 变体 cXXXf
    • double 变体 cXXX
    • long double 变体 cXXXl

C11

stdalign.h

定义于头文件 

alignas

(C11)

便利宏,展开成关键词 _Alignas

(关键词宏)

alignof

(C11)

便利宏,展开成关键词 _Alignof

(关键词宏)

__alignas_is_defined

(C11)

展开成整数常量 1

(宏常量)

__alignof_is_defined

(C11)

展开成整数常量 1

(宏常量)

 

stdatomic.h

原子操作

定义于头文件 

原子类型上的操作

ATOMIC_BOOL_LOCK_FREEATOMIC_CHAR_LOCK_FREEATOMIC_CHAR16_T_LOCK_FREEATOMIC_CHAR32_T_LOCK_FREEATOMIC_WCHAR_T_LOCK_FREEATOMIC_SHORT_LOCK_FREEATOMIC_INT_LOCK_FREEATOMIC_LONG_LOCK_FREEATOMIC_LLONG_LOCK_FREEATOMIC_POINTER_LOCK_FREE

(C11)

指示给定的原子类型为免锁

(宏常量)

atomic_is_lock_free

(C11)

指示原子对象是否免锁

(函数)

atomic_storeatomic_store_explicit

(C11)

存储值到原子对象

(函数)

atomic_loadatomic_load_explicit

(C11)

从原子对象读取值

(函数)

atomic_exchangeatomic_exchange_explicit

(C11)

与原子对象的值交换值

(函数)

atomic_compare_exchange_strongatomic_compare_exchange_strong_explicitatomic_compare_exchange_weakatomic_compare_exchange_weak_explicit

(C11)

若期待旧值则与原子对象交换值,否则读取旧值

(函数)

atomic_fetch_addatomic_fetch_add_explicit

(C11)

原子加法

(函数)

atomic_fetch_subatomic_fetch_sub_explicit

(C11)

原子减法

(函数)

atomic_fetch_oratomic_fetch_or_explicit

(C11)

原子逐位或

(函数)

atomic_fetch_xoratomic_fetch_xor_explicit

(C11)

原子逐位异或

(函数)

atomic_fetch_andatomic_fetch_and_explicit

(C11)

原子逐位与

(函数)

标志类型及操作

atomic_flag

(C11)

免锁布尔标志

(结构体)

atomic_flag_test_and_setatomic_flag_test_and_set_explicit

(C11)

设置 atomic_flag 为 true 并返回旧值

(函数)

atomic_flag_clearatomic_flag_clear_explicit

(C11)

设置 atomic_flag 为 false

(函数)

初始化

atomic_init

(C11)

初始化既存的原子对象

(函数)

ATOMIC_VAR_INIT

(C11)(C17 中弃用)(C23 中移除)

初始化新的原子对象

(宏函数)

ATOMIC_FLAG_INIT

(C11)

初始化新的 atomic_flag

(宏常量)

内存同步顺序

memory_order

(C11)

定义内存顺序制约

(枚举)

kill_dependency

(C11)

打破 memory_order_consume 的依赖链

(宏函数)

atomic_thread_fence

(C11)

通用的内存顺序依赖的栅栏同步原语

(函数)

atomic_signal_fence

(C11)

线程与执行于同一线程的信号处理函数间的栅栏

(函数)

便利类型别名

typedef 名

完整类型名

atomic_bool(C11)

_Atomic _Bool

atomic_char(C11)

_Atomic char

atomic_schar(C11)

_Atomic signed char

atomic_uchar(C11)

_Atomic unsigned char

atomic_short(C11)

_Atomic short

atomic_ushort(C11)

_Atomic unsigned short

atomic_int(C11)

_Atomic int

atomic_uint(C11)

_Atomic unsigned int

atomic_long(C11)

_Atomic long

atomic_ulong(C11)

_Atomic unsigned long

atomic_llong(C11)

_Atomic long long

atomic_ullong(C11)

_Atomic unsigned long long

atomic_char8_t(C23)

_Atomic char8_t

atomic_char16_t(C11)

_Atomic char16_t

atomic_char32_t(C11)

_Atomic char32_t

atomic_wchar_t(C11)

_Atomic wchar_t

atomic_int_least8_t(C11)

_Atomic int_least8_t

atomic_uint_least8_t(C11)

_Atomic uint_least8_t

atomic_int_least16_t(C11)

_Atomic int_least16_t

atomic_uint_least16_t(C11)

_Atomic uint_least16_t

atomic_int_least32_t(C11)

_Atomic int_least32_t

atomic_uint_least32_t(C11)

_Atomic uint_least32_t

atomic_int_least64_t(C11)

_Atomic int_least64_t

atomic_uint_least64_t(C11)

_Atomic uint_least64_t

atomic_int_fast8_t(C11)

_Atomic int_fast8_t

atomic_uint_fast8_t(C11)

_Atomic uint_fast8_t

atomic_int_fast16_t(C11)

_Atomic int_fast16_t

atomic_uint_fast16_t(C11)

_Atomic uint_fast16_t

atomic_int_fast32_t(C11)

_Atomic int_fast32_t

atomic_uint_fast32_t(C11)

_Atomic uint_fast32_t

atomic_int_fast64_t(C11)

_Atomic int_fast64_t

atomic_uint_fast64_t(C11)

_Atomic uint_fast64_t

atomic_intptr_t(C11)

_Atomic intptr_t

atomic_uintptr_t(C11)

_Atomic uintptr_t

atomic_size_t(C11)

_Atomic size_t

atomic_ptrdiff_t(C11)

_Atomic ptrdiff_t

atomic_intmax_t(C11)

_Atomic intmax_t

atomic_uintmax_t(C11)

_Atomic uintmax_t

stdnoreturn.h

定义于头文件 

noreturn

(C11)

便利宏,展开成 _Noreturn

(关键词宏)

线程

定义于头文件 

thrd_t

实现定义的标识线程的完整对象类型

thrd_create

(C11)

创建线程

(函数)

thrd_equal

(C11)

检查二个标识符是否表示同一线程

(函数)

thrd_current

(C11)

获取当前线程标识符

(函数)

thrd_sleep

(C11)

在给定的时间段内暂停调用方线程的执行

(函数)

thrd_yield

(C11)

让出当前时间片段

(函数)

thrd_exit

(C11)

终止调用方线程

(函数)

thrd_detach

(C11)

分离线程

(函数)

thrd_join

(C11)

阻塞到线程终止为止

(函数)

thrd_successthrd_timedoutthrd_busythrd_nomemthrd_error

(C11)

指示线程错误状态

(常量)

thrd_start_t

(C11)

函数指针类型 int(*)(void*) 的 typedef ,为 thrd_create 所用

(typedef)

互斥

定义于头文件 

mtx_t

互斥标识符

mtx_init

(C11)

创建互斥

(函数)

mtx_lock

(C11)

阻塞到锁定互斥为止

(函数)

mtx_timedlock

(C11)

阻塞到锁定互斥或时限经过为止

(函数)

mtx_trylock

(C11)

锁定互斥,若已锁定则返回而不阻塞

(函数)

mtx_unlock

(C11)

解锁互斥

(函数)

mtx_destroy

(C11)

销毁互斥

(函数)

mtx_plainmtx_recursivemtx_timed

(C11)(C11)(C11)

定义互斥的类型

(枚举)

一次调用

call_once

(C11)

准确地一次调用函数

(函数)

条件变量

定义于头文件 

cnd_t

条件变量标识符

cnd_init

(C11)

创建条件变量

(函数)

cnd_signal

(C11)

除阻一个阻塞于条件变量上的线程

(函数)

cnd_broadcast

(C11)

除阻所有阻塞于条件变量上的线程

(函数)

cnd_wait

(C11)

在条件变量上阻塞

(函数)

cnd_timedwait

(C11)

在条件变量上阻塞一段时长

(函数)

cnd_destroy

(C11)

销毁条件变量

(函数)

线程局域存储

定义于头文件 

thread_local

(C11)

线程局域存储类宏

(关键词宏)

tss_t

线程特定存储的指针

TSS_DTOR_ITERATIONS

(C11)

析构器被调用的最大次数

(宏常量)

tss_dtor_t

(C11)

函数指针类型 void(*)(void*) ,用作 TSS 析构器

(typedef)

tss_create

(C11)

以给定的析构器,创建线程特定存储指针

(函数)

tss_get

(C11)

从线程特定存储读取

(函数)

tss_set

(C11)

写入线程特定存储

(函数)

tss_delete

(C11)

释放给定的线程特定存储指针所保有的资源

(函数)

保留标识符

在 C 标准的未来修订中:

为函数名保留的表示符始终潜在地 (C23 起)对作为带外部链接的标识符的使用保留,而此处列出的其他标识符在包含  时潜在地 (C23 起)被保留。

声明、定义或 #undef 这种标识符导致未定义行为,若标准或实现提供它 (C23 起)。可移植的程序不应使用这些标识符。

 

  • 以 cnd_、 mtx_、 thrd_ 或 tss_ 带一个小写字母开始的函数名、类型名与枚举常量可能添加到  头文件中的声明;
  • 以 ATOMIC_ 带一个大写字母开始的宏名可能添加到  头文件中的宏定义;
  • 以 atomic_ 或 memory_ 带一个小写字母开始的 typedef 名可能添加到  头文件中的声明;
  • 以 memory_order_ 带一个小写字母开始的枚举常量可能添加到  头文件中的 memory_order 类型的定义;
  • 以 atomic_ 带一个小写字母开始的函数名可能添加到  头文件。

uchar.h

定义于头文件 

mbrtoc8

(C23)

转换窄多字节字符为 UTF-8 编码

(函数)

c8rtomb

(C23)

转换 UTF-8 字符串为窄多字节编码

(函数)

mbrtoc16

(C11)

从窄多字节字符串生成下一个 16 位宽字符

(函数)

c16rtomb

(C11)

将 16 位宽字符转换成窄多字节字符串

(函数)

mbrtoc32

(C11)

从窄多字节字符串生成下一个 32 位宽字符

(函数)

c32rtomb

(C11)

将 32 位宽字符转换成窄多字节字符串

(函数)

你可能感兴趣的:(C语言笔记,开发语言)