遵从性

来自cppreference.com
< c‎ | language


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

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

解释

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

自立的标准库头文件

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

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

  • 若实现预定义了宏 __STDC_IEC_60559_BFP____STDC_IEC_60559_DFP__,则 <math.h><fenv.h> 为完全自立的头文件。然而,在独立环境中,仅当程序不设置 FENV_ACCESS 语用为 ON 才要求这些头文件中的函数行为良定义。

有些标准库头文件是部分自立的。

(C23 起)
完全自立的标准库头文件
<float.h>浮点类型的极限
<iso646.h> (C95 起)运算符的替代写法
<limits.h>整数类型的范围
<stdalign.h> (C11 起)alignasalignof 便利宏
<stdarg.h>可变参数
<stdbool.h> (C99 起)布尔类型的宏
<stddef.h>常用宏定义
<stdint.h> (C99 起)定宽整数类型
<stdnoreturn.h> (C11 起)noreturn 便利宏
<stdbit.h> (C23 起)工作于类型的字节和位表示的宏
条件性完全自立的标准库头文件
<fenv.h> (C23 起)浮点环境
<math.h> (C23 起)常用数学函数
部分自立的标准库头文件
<stdlib.h> (C23 起)基础工具:内存管理程序工具字符串转换随机数算法
<string.h> (C23 起)字符串处理

引用

  • C23 标准(ISO/IEC 9899:2024):
  • 4 Conformance (第 9-10 页)
  • 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

参阅

自立与有宿主实现C++ 文档