繁体   English   中英

C99的所有功能是否也在C ++中?

[英]Are all of the features of C99 also in C++?

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

如果没有,哪些功能在C ++中,哪些不是?

C ++(ISO 14882:2017)完全支持以下C99(ISO 9899:1999)功能:
(尽管库头文件是<cname>而不是<name.h>

  • <wchar.h><wctype.h>宽字符库支持(最初在ISO / IEC 9899:1990 / Amd.1:1995中指定)
  • <tgmath.h>类型泛型数学宏
  • long long int类型和库函数
  • 扩展整数类型
  • 提高最低翻译限额
  • <float.h>其他浮点特征
  • 删除隐式int
  • 可靠的整数除法
  • 通用字符名称(\\ u和\\ U)
  • 扩展标识符
  • 十六进制浮点常量和%a和%A printf / scanf转换说明符
  • // 评论
  • <inttypes.h><stdint.h>指定的宽度整数类型和相应的库函数
  • 删除隐式函数声明
  • 预处理器算法在intmax_t / uintmax_t中完成
  • 混合声明和声明
  • 选择和迭代语句的新块范围
  • 整数常量类型规则
  • 整数提升规则
  • <stdio.h><wchar.h>的vscanf函数系列
  • <math.h>其他数学库函数
  • 通过数学库函数处理错误条件(math_errhandling)
  • <fenv.h>浮点环境访问
  • IEC 60559(也称为IEC 559或IEEE算术)支持
  • 枚举声明中允许使用尾随逗号
  • printf中允许的%lf转换说明符
  • 内联函数
  • <stdio.h>的snprintf函数系列
  • 幂等类型限定词
  • 空宏观论点
  • 其他预定义的宏名称
  • _Pragma预处理运算符
  • 标准的pragma
  • __func__预定义标识符
  • va_copy宏
  • 额外的strftime转换说明符
  • LIA兼容性附件
  • 在二进制文件的开头弃用ungetc
  • 删除别名数组参数的弃用
  • 将数组转换为指针不限于左值
  • 对聚合和联合初始化的宽松约束
  • 轻松限制便携式标题名称
  • 返回没有表达式的返回不允许返回值的函数(反之亦然)
  • 具有可变数量参数的宏

以下C99功能在C ++中具有类似用途,但存在实现差异,并且语言不兼容代码:

  • 通过有向图和<iso646.h>限制字符集支持(最初在ISO / IEC 9899:1990 / Amd.1:1995中指定)
  • 通过有效类型更精确的别名规则
  • <complex.h>复杂(和虚构)支持
  • <stdbool.h>布尔类型
  • 新结构类型兼容性规则(标记兼容性)

C ++不支持以下C99功能:

  • 限制指针
  • 可变长度数组
  • 灵活的阵列成员
  • 参数数组声明符中的static和type限定符
  • 复合文字
  • 指定的初始化者

灵活的数组成员不是任何C ++标准的一部分(并且dynarray提议在C ++中使用)。 还有许多其他较少使用的C99功能,这些功能不在C ++中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM