首页 > 后端开发 > C++ > C 真的是 C 的子集:探索关键差异和例外吗?

C 真的是 C 的子集:探索关键差异和例外吗?

Linda Hamilton
发布: 2024-12-31 14:05:10
原创
834 人浏览过

Is C Truly a Subset of C  :  Exploring Key Differences and Exceptions?

C 作为 C 的子集的例外

虽然通常说 C 是 C 的子集,但这种断言并不完全准确。比较 C 和 C 的特定版本时会出现差异。

C89 与 C 差异

  • 没有暂定定义: C 没有不允许重新声明没有定义的同名变量
  • 不同数组类型兼容性: C 区分特定大小的数组(例如 int a[1])和未指定大小的数组(例如 int (*ap)[ ]),而 C 允许它们兼容。
  • 无 K&R 函数声明风格: C 需要不同的函数定义语法,不允许旧的 K&R 风格(例如 int b(a) int a; { })。
  • 嵌套结构作用域差异: 在 C 中,嵌套结构被视为类级声明,使其在封闭结构之外无法访问struct.
  • 无默认 int 类型: 在 C 中,自动变量需要显式类型说明符,这与 C 中默认假定 int 不同。

C99 与 C 的差异

C99 引入了与严格 C 的额外偏差兼容性:

  • 数组维度限制: C99 不允许在指定函数参数的数组维度时使用某些特殊字符。
  • 不存在可变长度数组: C 中不支持使用非常量表达式作为大小声明的变长数组.
  • 没有灵活数组成员:C99 的灵活数组成员(可以在运行时指定大小)与 C 不兼容。
  • 缺乏限制限定符: C 的限制限定符,用于优化目的,在以下版本中不可用C99.

以上是C 真的是 C 的子集:探索关键差异和例外吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板