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中文网其他相关文章!