ISO/IEC 9899:1999(E) C语言标准文档

需积分: 9 9 下载量 113 浏览量 更新于2024-09-30 收藏 1.5MB PDF 举报
"C99标准,全称为ISO/IEC 9899:1999(E),是C语言的第二个正式国际标准,于1999年12月1日发布。这个标准由国际标准化组织(ISO)和国际电工委员会(IEC)共同制定,并由美国国家标准协会(ANSI)批准成为美国国家标准。C99标准对1989年的C89标准进行了更新和扩展,引入了新的特性,旨在提高编程效率、增强类型安全性和支持可移植性。 C99标准的关键新特性包括: 1. **复数和浮点常量**:C99引入了复数类型(`complex float`, `complex double`, `complex long double`)以及用后缀`_Imaginary`表示的纯虚数。同时,允许浮点常量以`f`或`F`后缀表示`float`,以`l`或`L`后缀表示`long double`。 2. **变量声明的位置**:C99允许在函数体内的任何位置声明变量,而不仅仅是块的开头。 3. **类型安全的指针算术**:对于数组指针,C99明确了指针算术的安全边界,防止了越界访问。 4. **VLA(可变长度数组)**:C99允许在函数声明或定义时声明数组的长度可以根据运行时的表达式来确定,提高了代码的灵活性。 5. **`_Bool`类型**:引入了布尔类型`_Bool`,它是布尔逻辑的基础,可以存储`true`或`false`值。 6. **`inline`关键字**:C99引入了`inline`关键字,用于请求编译器尝试内联函数,以提高代码执行速度。 7. **`restrict`关键字**:此关键字用于告知编译器某些指针不会通过其他途径访问同一内存,从而帮助优化代码。 8. **`_Static_assert`**:C99引入了静态断言,可以在编译时检查条件,确保程序在编译阶段就能发现错误。 9. **头文件的变更**:一些标准库头文件被重命名或重新组织,以减少名字冲突和改进模块化。 10. **预处理器宏改进**:增加了`__func__`预定义宏,它在编译时自动填充当前函数的名称。 C99标准的实施促进了C语言的发展,使得程序员可以编写更高效、更安全的代码。然而,值得注意的是,不是所有的C编译器都完全支持C99的所有特性,尤其是在嵌入式系统和一些老旧的编译器中。尽管如此,C99仍然是现代C编程的重要参考标准,其影响力持续至今。更多关于C99标准的信息可以通过相关书籍、在线文档或访问www.fishc.com等资源获取。"