c99
Table of Contents
1 概述
C89 是最早的 C语言规范,于 1989 年提出,1990 年先由 ANSI(美国国家标准委员会,American National Standards Institute)推出 ANSI 版本,后来被接纳为 ISO 国际标准(ISO/IEC9899:1990),因而有时也称为 C90,最经典的 C语言教材[K&R]就是基于这个版本的。
C99(ISO/IEC9899:1999)是在 1999 年推出的,加入了许多新的特性,这里主要介绍常用的一些特性。
2 features1
2.1 指定初始化
在初始化结构体和数组时,可以通过指定具体成员名或数组下标来赋初值。
2.2 变长数组(vlna)
2.3 long long 类型
2.4 inline 函数
2.5 bool 类型
2.6 复合常量(Compound Literals)
简单来说复合常量就是允许你定义一个匿名的结构体或数组变量。如:
2.7 for 循环变量初始化(for loop intializers)
2.8 新增头文件
C89 中标准的头文件:
- <assert.h> 定义宏 assert()
- <ctype.h> 字符处理
- <errno.h> 错误报告
- <float.h> 定义与实现相关的浮点值勤
- <limits.h> 定义与实现相关的各种极限值
- <locale.h> 支持函数 setlocale()
- <math.h> 数学函数库使用的各种定义
- <setjmp.h> 支持非局部跳转
- <signal.h> 定义信号值
- <stdarg.h> 支持可变长度的参数列表
- <stddef.h> 定义常用常数
- <stdio.h> 支持文件输入和输出
- <stdlib.h> 其他各种声明
- <string.h> 字符串函数
- <time.h> 支持系统时间函数
C99 新增的头文件
- <complex.h> 支持复杂算法
- <fenv.h> 给出对浮点状态标记和浮点环境的其他方面的访问
- <inttypes.h> 定义标准的、可移植的整型类型集合,也支持处理最大宽度整数的函数
- <iso646.h> 首先在此 1995 年第一次修订时引进,用于定义对应各种运算符的宏
- <stdbool.h> 支持布尔数据类型类型,定义宏 bool,以便兼容于 C++
- <stdint.h> 定义标准的、可移植的整型类型集合,该文件包含在<inttypes.h>中
- <tgmath.h> 定义一般类型的浮点宏
- <wchar.h> 首先在 1995 年第一次修订时引进,用于支持多字节和宽字节函数
- <wctype.h> 首先在 1995 年第一次修订时引进,用于支持多字节和宽字节分类函数
3 gcc
-std=c99