clang ANSI lib 标准差异汇总速查

clang ANSI lib 标准差异汇总速查

C(ANSI C)语言标准函数库

C标准库概述

基本说明

从语言本身的角度(与平台无关)来说,标准C语言(ANSI C)共定义了15 个头文件,截至C11标准共包含29个头文件。

各标准差异:

标准名称头文件差异
C8915 标准头文件
C90、C89标准头文件无差异, 排版存在差异
C95+3 标准头文件
C99+6 标准头文件
C11+5 标准头文件
C17
C标准库按使用频度:

常用:

  • 一组:

    1
    2
    3
    4
    stdio.h
    ctype.h
    stdlib.h
    string.h
  • 二组:

    1
    2
    3
    4
    assert.h
    limits.h
    stddef.h
    time.h
  • 三组:

    1
    2
    3
    4
    5
    6
    7
    float.h
    math.h
    error.h
    locale.h
    setjmp.h
    signal.h
    stdarg.h
标准库备注
头文件标准版本备注
assert.hC89/C90条件编译宏,将参数与零比较
ctype.hC89/C90用于确定包含字符数据中的类型
errno.hC89/C90报告错误条件宏,内含3个宏(EDOM 特定含义的错误,在math.h 中表示域错误;ERANGE 特定含义的错误,在math.h 中表示溢出错误;errno 库函数中用来盛放错误代码的宏)
float.hC89/C90浮点数类型,提供范围和精度的宏,包含了一组与浮点值相关的依赖于平台的常量
limits.hC89/C90检测整型数据数据类型的表达值范围
locale.hC89/C90本地化
math.hC89/C90常用数学函数库
setjmp.hC89/C90非局部跳转
signal.hC89/C90信号处理
stdarg.hC89/C90可变参数
stddef.hC89/C90常用宏定义
stdio.hC89/C90输入/输出
stdlib.hC89/C90standard library标准库函数库:内存管理、程序工具、字符串转换、随机数
string.hC89/C90字符串处理
time.hC89/C90时间处理
wchar.hC95扩展多字节和宽字符处理
wctype.hC95包含了一系列用于检测和转换单个宽字符的函数库,wctype.h 是ctype.h的宽字符版本,wctype.h的出现晚于ctype.h。wctype.h的引入使C语言可以更好地处理英文以外的语言。
complex.hC99复数运算
fenv.hC99浮点数环境
inttypes.hC99整数类型的格式转换
stdbool.hC99布尔类型
stdint.hC99定宽整数类型
tgmath.hC99泛型数学(包装 math.h 和 complex.h 的宏)
stdalign.hC11alignas 与 alignof 便利宏
stdatomic.hC11原子类型
stdnoreturn.hC11noreturn 便利宏
threads.hC11线程库
uchar.hC11UTF-16 和 UTF-32 字符工具

运行时库

C run-time library(CRT)
  • C运行时库区别于C++语言的运行时库,指的是C程序运行时需要调用的库的函数,是一个相对概念
  • C运行时库由编译器生产商提供,亦称为第三方 C 运行库(Third party C run-time libraries)
  • C运行时库一般是平台或系统提供,windows或linux,macos等。
Universal C Runtime 库(UCRT 库)

通用C运行时库,包含多C库的头文件,Windows组件之一,自win10开始以系统发行方式部分提供。关联库:

  • 对应的lib库为libucrt.lib
  • 对应的dll库为ucrtbase.dll

UCRT库文件:

关联的DLL备注选项预处理器指令
libucrt.lib将 UCRT 静态链接到你的代码。/MT_MT
libucrtd.lib用于静态链接的 UCRT 调试版本。不可再发行。/MTd_DEBUG,_MT
ucrt.libucrtbase.dllUCRT 的 DLL 导入库。/MD_MT,_DLL
ucrtd.libucrtbased.dllUCRT 调试版本的 DLL 导入库。不可再发行。/MDd_DEBUG,_MT,_DLL
标准库和运行时库的区别
  • C标准库再跨平台系统上,执行结果一致
  • C运行库是C标准库的扩展集,完全包含C标准库,但扩展的函数因不同的操作系统平台有差异
  • 不同的操作系统,c运行时库执行的结果可能不同,但是对c标准库的支持是完全一致

clang ANSI lib 标准差异汇总速查

https://www.defense.ink/f4ab9929.html

Author

Jack Liu

Posted on

2022-05-05

Updated on

2024-02-17

Licensed under