C89 和 C99 标准的区别
此文档列出 C89 和 C99 两个标准的主要区别。
1、C99 新增特性
内容
说明
单杠注释
支持 // 注释(C89只支持 / /)
变量声明位置
允许在代码块中任意位置声明变量(C89要求在所有执行语句之前声明变量)
布尔类型
引入
_Bool 类型和 新增 stdbool.h 头文件长整型扩展
新增
long long int 和 stdint.h 头文件复数支持:
新增
_Complex 和 complex.h 头文件2、数组增强
- 变长数组,数组长度可以用运行时表达式定义。
- 结构体/数组成员初始化,支持指定初始化列表,如:
struct point p1 = { .x = 1, .y = 2 };。
3、 函数改进
- 内联函数,支持
inline关键字。 - 受限指针,引入
restrict关键字优化指针别名。
4、语法和库扩展
- 复合字面量,如:
(struct point) {.x = 1, .y = 2}。 - 数学函数更新,如 增加
sqrtf()函数。(单精度版本)