c - C 头文件一致性
问题描述
我正在寻找 C 标准库头文件一致性报告的列表——例如,哪些头文件是可选的,对于符合标准的编译器是强制性的——适用于所有 C 标准(或至少 C20)。
解决方案
C17(当前的 C 标准)将标准头文件列为:
<assert.h> <math.h> <stdlib.h>
<complex.h> <setjmp.h> <stdnoreturn.h>
<ctype.h> <signal.h> <string.h>
<errno.h> <stdalign.h> <tgmath.h>
<fenv.h> <stdarg.h> <threads.h>
<float.h> <stdatomic.h> <time.h>
<inttypes.h> <stdbool.h> <uchar.h>
<iso646.h> <stddef.h> <wchar.h>
<limits.h> <stdint.h> <wctype.h>
<locale.h> <stdio.h>
该标准在第 7.1.2 节“标准标题”的脚注中说明了这一点:
头文件 <complex.h>、<stdatomic.h> 和 <threads.h> 是实现不需要支持的条件特性;见 6.10.8.3
第 6.10.8.3 节(“条件功能宏”)反过来对这些标题有这样的说法:
__STDC_NO_ATOMICS__
整数常量 1,意在表明实现不支持原子类型(包括 _Atomic 类型限定符)和<stdatomic.h>
标头。
__STDC_NO_COMPLEX__
整数常量 1,意在表明实现不支持复杂类型或<complex.h>
标头。
__STDC_NO_THREADS__
整数常量 1,意在表明实现不支持<threads.h>
头文件。
最后,C17 谈到了“符合独立”的实现(第 4 节“一致性”):
符合标准的独立实现应接受任何严格符合标准的程序,其中库条款(第 7 条)中指定的功能的使用仅限于标准头文件
<float.h>
、<iso646.h>
、<limits.h>
、<stdalign.h>
、<stdarg.h>
、<stdbool.h>
、<stddef.h>
、stdint.h>
和<stdnoreturn.h>
.
推荐阅读
- reactjs - 在尝试使用 DRF 获取数据时,在 axios GET Response 中接收纯 Js 代码文件以做出反应
- javascript - 无法从 Node.js (express) 服务返回 xlsx 文件,该服务从 S3 存储桶获取该文件以供浏览器应用程序使用
- python - 关于在 Mac 上通过终端运行 input() 函数的问题
- php - 是否可以将所有自定义函数文件放在一个文件夹中并让所有 php 脚本默认访问它们?
- excel - Excel 间接引用产生 #ref 错误
- python - PySpark 一种将不同列数据聚合/组合在一起的方法
- snowflake-cloud-data-platform - 两个帐户之间的数据共享,但具有修改数据的能力
- azure - 来自类库的 Azure 函数调用方法?
- javascript - jsPDF在IE11浏览器中无法正常工作
- python - Pandas Dataframe - 如何获得按值分组的滚动和?