• 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.h>

    assert

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

    (宏函数)

    static_assert

    (C11)

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

    (关键词宏)

    ctypet.h

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

    字符分类

    定义于头文件 <ctype.h>

    isalnum

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

    (函数)

    isalpha

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

    (函数)

    islower

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

    (函数)

    isupper

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

    (函数)

    isdigit

    检查字符是否为数字

    (函数)

    isxdigit

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

    (函数)

    iscntrl

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

    (函数)

    isgraph

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

    (函数)

    isspace

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

    (函数)

    isblank

    (C99)

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

    (函数)

    isprint

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

    (函数)

    ispunct

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

    (函数)

    字符操作

    tolower

    将字符转换成小写

    (函数)

    toupper

    将字符转换成大写

    (函数)

    errno.h

    定义于头文件 <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

    定义于头文件 <locale.h>

    setlocale

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

    (函数)

    localeconv

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

    (函数)

    lconv

    localeconv 所返回的格式化细节

    (结构体)

    本地环境类别

    LC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIME

    setlocale 所用的本地环境类别

    math.h

    定义于头文件 <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)

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

    (宏函数)

    宏常量

    定义于头文件 <math.h>

    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.h>

    setjmp

    保存环境

    (宏函数)

    longjmp

    跳转到指定位置

    (函数)

    类型

    jmp_buf

    执行环境类型

    (typedef)

    signal.h

    定义于头文件 <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

    额外基本类型及便利宏

    定义于头文件 <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)

    分配对齐的内存

    (函数)

    终止程序

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

    定义于头文件 <stdlib.h>

    abort

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

    (函数)

    exit

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

    (函数)

    quick_exit

    (C11)

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

    (函数)

    _Exit

    (C99)

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

    (函数)

    atexit

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

    (函数)

    at_quick_exit

    (C11)

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

    (函数)

    EXIT_SUCCESSEXIT_FAILURE

    表示程序的执行结果

    (宏常量)

    访问环境

    system

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

    (函数)

    getenvgetenv_s

    (C11)

    访问环境变量列表

    (函数)

     

    转换成数值格式

    定义于头文件 <stdlib.h>

    atof

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

    (函数)

    atoi

    atol

    atoll

    (C99)

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

    (函数)

    strtol

    strtoll

    (C99)

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

    (函数)

    strtoul

    strtoull

    (C99)

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

    (函数)

    strtof

    strtod

    strtold

    (C99)(C99)

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

    (函数)

     

    伪随机数生成

     

    定义于头文件 <stdlib.h>

    rand

    产生一个伪随机数

    (函数)

    srand

    播种伪随机数生成器

    (函数)

    RAND_MAX

    rand() 生成的最大可能值

    (宏常量)

    算法

     

    定义于头文件 <stdlib.h>

    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)

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

    (函数)

    字符串检验

    定义于头文件 <string.h>

    strlen

    strnlen_s

    (C11)

    返回给定字符串的长度

    (函数)

    strcmp

    比较两个字符串

    (函数)

    strncmp

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

    (函数)

    strcoll

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

    (函数)

    strchr

    查找字符的首次出现

    (函数)

    strrchr

    查找字符的最后一次出现

    (函数)

    strspn

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

    (函数)

    strcspn

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

    (函数)

    strpbrk

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

    (函数)

    strstr

    查找子串字符的首次出现

    (函数)

    strtok

    strtok_s

    (C11)

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

    (函数)

    字符数组操作

    定义于头文件 <string.h>

    memchr

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

    (函数)

    memcmp

    比较两块缓冲区

    (函数)

    memset

    memset_s

    (C11)

    以字符填充缓冲区

    (函数)

    memcpy

    (C11)

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

    (函数)

    memmove

    memmove_s

    (C11)

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

    (函数)

    memccpy

    (C23)

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

    (函数)

    杂项

    定义于头文件 <string.h>

    strerror

    strerror_s

    strerrorlen_s

    (C11)(C11)

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

    (函数

    time.h

     

     

    函数

    时间操纵

    定义于头文件 <time.h>

    difftime

    计算时间差

    (函数)

    time

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

    (函数)

    clock

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

    (函数)

    timespec_get

    (C11)

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

    (函数)

    timespec_getres

    (C23)

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

    (函数)

    格式转换

    定义于头文件 <time.h>

    asctime

    asctime_r

    asctime_s

    (C23)(C11)

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

    (函数)

    ctime

    ctime_r

    ctime_s

    (C23)(C11)

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

    (函数)

    strftime

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

    (函数)

    定义于头文件 <wchar.h>

    wcsftime

    (C95)

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

    (函数)

    定义于头文件 <time.h>

    gmtime

    gmtime_r

    gmtime_s

    (C23)(C11)

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

    (函数)

    localtime

    localtime

    _rlocaltime_s

    (C23)(C11)

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

    (函数)

    mktime

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

    (函数)

    常量

    定义于头文件 <time.h>

    CLOCKS_PER_SEC

    处理器每秒的时间计数

    (宏常量)

    类型

    定义于头文件 <time.h>

    tm

    日历时间类型

    (结构体)

    time_t

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

    (typedef)

    clock_t

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

    (typedef)

    timespec

    (C11)

    单位为秒和纳秒的时间

    (结构体)

    stdio.h

    类型

    定义于头文件 <stdio.h>

    FILE

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

    (typedef)

    fpos_t

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

    (typedef)

    预定义标准流

    定义于头文件 <stdio.h>

    stdinstdoutstderr

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

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

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

    (宏常量)

    函数

    文件访问

    定义于头文件 <stdio.h>

    fopenfopen_s

    (C11)

    打开文件

    (函数)

    freopenfreopen_s

    (C11)

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

    (函数)

    fclose

    关闭文件

    (函数)

    fflush

    将输出流与实际文件同步

    (函数)

    setbuf

    为文件流设置缓冲区

    (函数)

    setvbuf

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

    (函数)

    直接输入/输出

    定义于头文件 <stdio.h>

    fread

    从文件读取

    (函数)

    fwrite

    写入到文件

    (函数)

    无格式输入/输出

    窄字符

    定义于头文件 <stdio.h>

    fgetcgetc

    从文件流获取一个字符

    (函数)

    fgets

    从文件流获取一个字符串

    (函数)

    fputcputc

    将一个字符写入文件流

    (函数)

    fputs

    将一个字符串写入文件流

    (函数)

    getchar

    从 stdin 读取一个字符

    (函数)

    getsgets_s

    (C11 中移除)(C11)

    从 stdin 读取一个字符串

    (函数)

    putchar

    将一个字符写入 stdout

    (函数)

    puts

    将一个字符串写入 stdout

    (函数)

    ungetc

    将一个字符送回文件流

    (函数)

    有格式输入/输出

    窄字符

    定义于头文件 <stdio.h>

    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、文件流或缓冲区

    使用可变参数列表

    (函数)

    文件位置

    定义于头文件 <stdio.h>

    ftell

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

    (函数)

    fgetpos

    获取文件位置指示器

    (函数)

    fseek

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

    (函数)

    fsetpos

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

    (函数)

    rewind

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

    (函数)

    错误处理

    定义于头文件 <stdio.h>

    clearerr

    清除错误

    (函数)

    feof

    检查文件结尾

    (函数)

    ferror

    检查文件错误

    (函数)

    perror

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

    (函数)

    文件操作

    定义于头文件 <stdio.h>

    remove

    删除文件

    (函数)

    rename

    重命名文件

    (函数)

    tmpfiletmpfile_s

    (C11)

    返回指向临时文件的指针

    (函数)

    tmpnamtmpnam_s

    (C11)

    返回唯一的文件名

    (函数)

    宏常量

    定义于头文件 <stdio.h>

    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 字符的替用拼写,作为宏定义于 <iso646.h> :

    定义于头文件 <iso646.h>

    基本

    替用

    &&

    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

    定义于头文件 <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 本地环境中的字符分类类别

    (函数)

    字符操作

    定义于头文件 <wctype.h>

    towlower

    (C95)

    将宽字符转换为小写

    (函数)

    towupper

    (C95)

    将宽字符转换为大写

    (函数)

    towctrans

    (C95)

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

    (函数)

    wctrans

    (C95)

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

     

    wchar.h

    定义于头文件 <wchar.h>

    wcstolwcstoll

    (C95)(C99)

    将宽字符串转换成整数值

    (函数)

    wcstoulwcstoull

    (C95)(C99)

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

    (函数)

    wcstofwcstodwcstold

    (C99)(C95)(C99)

    将宽字符串转换成浮点值

    (函数)

    定义于头文件 <inttypes.h>

    wcstoimaxwcstoumax

    (C99)(C99)

    将宽字符串转换成 intmax_t 或 uintmax_t

    (函数)

    字符串操作

    定义于头文件 <wchar.h>

    wcscpywcscpy_s

    (C95)(C11)

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

    (函数)

    wcsncpywcsncpy_s

    (C95)(C11)

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

    (函数)

    wcscatwcscat_s

    (C95)(C11)

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

    (函数)

    wcsncatwcsncat_s

    (C95)(C11)

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

    (函数)

    wcsxfrm

    (C95)

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

    (函数)

    字符串检验

    定义于头文件 <wchar.h>

    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)

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

    (函数)

    宽字符数组操作

    定义于头文件 <wchar.h>

    wmemcpywmemcpy_s

    (C95)(C11)

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

    (函数)

    wmemmovewmemmove_s

    (C95)(C11)

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

    (函数)

    wmemcmp

    (C95)

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

    (函数)

    wmemchr

    (C95)

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

    (函数)

    wmemset

    (C95)

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

    (函数)

     

    C99

    complex.h

    定义于头文件 <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.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

    定义于头文件 <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

    定义于头文件 <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

    类型

    定义于头文件 <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 。

    宏常量

    定义于头文件 <stdint.h>

    有符号整数:宽度

    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 类型对象的最大值

    (宏常量)

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

    定义于头文件 <stdint.h>

    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 <stdint.h>
    UINT64_C(0x123) // 可以展开成 0x123ULL 或 0x123UL

     

     

    tgmath.h

    泛型数学

      

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

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

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

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

    复数/实数泛型宏

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

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

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

    泛型宏如下所示:

    实数限定函数

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

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

    复数限定函数

    对于所有没有实数对应的复数函数,存在泛型宏 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

    定义于头文件 <stdalign.h>

    alignas

    (C11)

    便利宏,展开成关键词 _Alignas

    (关键词宏)

    alignof

    (C11)

    便利宏,展开成关键词 _Alignof

    (关键词宏)

    __alignas_is_defined

    (C11)

    展开成整数常量 1

    (宏常量)

    __alignof_is_defined

    (C11)

    展开成整数常量 1

    (宏常量)

     

    stdatomic.h

    原子操作

    定义于头文件 <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

    定义于头文件 <stdnoreturn.h>

    noreturn

    (C11)

    便利宏,展开成 _Noreturn

    (关键词宏)

    线程

    定义于头文件 <threads.h>

    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)

    互斥

    定义于头文件 <threads.h>

    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)

    准确地一次调用函数

    (函数)

    条件变量

    定义于头文件 <threads.h>

    cnd_t

    条件变量标识符

    cnd_init

    (C11)

    创建条件变量

    (函数)

    cnd_signal

    (C11)

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

    (函数)

    cnd_broadcast

    (C11)

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

    (函数)

    cnd_wait

    (C11)

    在条件变量上阻塞

    (函数)

    cnd_timedwait

    (C11)

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

    (函数)

    cnd_destroy

    (C11)

    销毁条件变量

    (函数)

    线程局域存储

    定义于头文件 <threads.h>

    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 起)对作为带外部链接的标识符的使用保留,而此处列出的其他标识符在包含 <stdatomic.h> 时潜在地 (C23 起)被保留。

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

     

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

    uchar.h

    定义于头文件 <uchar.h>

    mbrtoc8

    (C23)

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

    (函数)

    c8rtomb

    (C23)

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

    (函数)

    mbrtoc16

    (C11)

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

    (函数)

    c16rtomb

    (C11)

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

    (函数)

    mbrtoc32

    (C11)

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

    (函数)

    c32rtomb

    (C11)

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

    (函数)

  • 相关阅读:
    IO 模型的演变
    HTTP到底是什么?
    电脑显示器符合BS 476-7 英国Class 2阻燃测试
    记一次字符串末尾空白丢失的排查 → MySQL 是会玩的!
    【Qt】常用控件(一)
    ARMv8 cache的包含策略inclusive 和 exclusive之间的区别以及Cortex-A55示例详解
    矩阵账号搭建流程,3步学会,直接拿去用即可
    挨个排列原子!美国科学家打造出全新量子试验台
    【网络安全】如何保护IP地址?
    径向基神经网络RBF:Matlab实现RBF神经网络(含例子及代码)
  • 原文地址:https://blog.csdn.net/qq_43812868/article/details/125469876