也是C 中C99的所有功能

Are all of the features of C99 also in C++?

本文关键字:功能 C99 也是      更新时间:2023-10-16

此页面列出了C99中新的53个功能(即它们在C99中,但不在C89中)。所有这些功能都在C 中吗?甚至C 98?

如果不是,则哪个功能在C 中,哪些不是?

以下C99(ISO 9899:1999)功能得到了C 的完全支持(ISO 14882:2017):
(尽管库标题将为<cname>,而不是<name.h>

  • <wchar.h><wctype.h>中的宽字符库支持(最初 在ISO/IEC 9899:1990/AMD.1:1995中指定
  • <tgmath.h>中的类型生成数学宏
  • 长长的int类型和库功能
  • 扩展整数类型
  • 增加最小翻译限制
  • <float.h>中的其他浮点特征
  • 删除隐式int
  • 可靠的整数部门
  • 通用字符名称( u和 u)
  • 扩展标识符
  • 十六进制的浮点常数和%a和%a printf/scanf转换 说明器
  • //评论
  • <inttypes.h><stdint.h>
  • 中指定的宽度整数类型和相应的库功能
  • 删除隐式函数声明
  • 在Intmax_t/uintmax_t
  • 中完成的预处理器算术算术
  • 混合声明和声明
  • 用于选择和迭代语句的新块范围
  • 整数常数类型规则
  • 整数促销规则
  • <stdio.h><wchar.h>中的VSANF功能家族
  • <math.h>中的其他数学库函数
  • 数学库功能(Math_errhandling)对错误条件的处理
  • <fenv.h>中的浮点环境访问
  • IEC 60559(也称为IEC 559或IEEE算术)支持
  • 在枚举声明中允许的逗号
  • %lf转换说明符在printf中
  • 内联函数
  • <stdio.h>中的SNPRINTF功能家族
  • disempotent类型限定词
  • 空宏参数
  • 附加预定义的宏名称
  • _pragma预处理操作员
  • 标准布拉格马斯
  • __func__预定义标识符
  • va_copy宏
  • 其他strftime转换指定
  • lia兼容性附件
  • 在二进制文件开始时将UNGETC弃用
  • 删除别名数组参数的弃用
  • 将数组转换为不限于lvalues的指针
  • 对汇总和联合初始化的放松约束
  • 对便携式标题名称的放松限制
  • 返回不允许返回值的功能中不允许的返回(和VICE versa)
  • 宏具有可变数量的参数

以下C99功能在C 中具有相似的用途,但是存在实现差异,而语言不兼容:

  • 通过Digraphs和<iso646.h>的受限制角色集支持(最初指定 在ISO/IEC 9899:1990/AMD.1:1995)
  • 通过有效类型更精确的混叠规则
  • <complex.h>中的复杂(和虚构)支持
  • <stdbool.h>中的布尔型
  • 新结构类型兼容性规则(标签兼容性)

C 不支持以下C99功能:

  • 限制指针
  • 可变长度数组
  • 灵活数组成员
  • 参数阵列声明器中的静态和键入预选赛
  • 复合文字
  • 指定的初始化

灵活数组成员不属于任何C 标准的一部分(dynarray提案未在C 中进行调整)。并且还有许多其他较少使用的C99功能,这些功能不在C 中。