遵从性

来自cppreference.com
< c‎ | language

遵从性 (conformance) 有三重定义:

  • 严格遵从程序 - 仅使用良定义的语言构造,即拥有单一行为的构造。它不包含未指定、未定义或实现定义的行为,且不超过任何最小实现极限。
  • 遵从程序 - 可为遵从实现所接受。
  • 遵从实现 -
    • 遵从的有宿主实现应当接受任何严格遵从程序。
    • 遵从的自立实现应当接受任何将库章(第 7 章)中指定的库特性限制到自立的标准库头文件(见后述)的内容的严格遵从程序。
    • 遵从实现可拥有扩展(包括额外的库函数),只要它们不改变任何严格遵从程序的行为。

解释

标准不在翻译单元上定义任何最小实现极限。有宿主环境拥有操作系统;自立环境无操作系统。运行于有宿主环境中的程序可使用任何库章节(第 7 章)中描述的特性;运行于自立环境中的程序可使用第 4 章所要求的库特性子集。

自立的标准库头文件

每个完全自立的标准库头文件中的所有标准库特性均要求为自立实现所提供。

有些头文件是条件性自立的。

  • 若实现预定义宏 __STDC_IEC_60559_BFP____STDC_IEC_60559_BFP__ ,则
    • <math.h><fenv.h> 为完全自立的头文件,而
    • <stdlib.h> 为部分自立的头文件。

在部分自立的头文件中,仅一部分标准库特性要求为自立实现所提供。

  • 不要求自立实现提供 strdupstrndupstrcollstrxfrmstrerror
  • 在预定义 __STDC_IEC_60559_BFP____STDC_IEC_60559_BFP__ 时,在 <stdlib.h> 中仅要求自立实现提供数值转换函数( atoXstrtoXstrfromX )。
(C23 起)
完全自立的标准库头文件
<float.h> 浮点类型的极限
<limits.h> 整数类型的范围
<iso646.h> (C95) 符号的替代写法
<stdalign.h> (C11) alignasalignof 便利宏
<stdarg.h> 可变参数
<stdbool.h> (C99) 布尔类型的宏
<stddef.h> 常用宏定义
<stdint.h> (C99) 定宽整数类型
<stdnoreturn.h> (C11) noreturn 便利宏
部分自立的标准库头文件
<string.h> (C23) 字符串处理
条件性完全自立的标准库头文件
<fenv.h> (C23) 浮点环境
<math.h> (C23) 常用数学函数
条件性部分自立的标准库头文件
<stdlib.h> (C23) 基础工具:内存管理程序工具字符串转换随机数算法

引用

  • C17 标准(ISO/IEC 9899:2018):
  • 4 Conformance (第 4 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 4 Conformance (第 8-9 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 4 Conformance (第 7-8 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 1.7 Compliance

参阅