[英]Are all of the features of C99 also in 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限定符
- 复合文字
- 指定的初始化者
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.