1、概述
C语言标准是由ANSI(美国国家标准协会)和ISO(国际标准化组织)共同制定的一种语言规范。标准经历过如下更新:
- C89/C90标准
- C99标准
- C11标准
- C17标准
2、C89/C90标准
(1)这是1989年正式发布的C语言标准,简称为C89或C90。这个标准定义了C语言的基本语法、数据类型、运算符、控制结构等核心特性。
3、C99标准
(1)在1999年,ISO对C语言进行了修订,发布了ISO9899:1999标准,简称为C99。这个标准增加了一些新的特性,例如支持长长整型(long long int)、无符号整数类型(unsigned int)、可变长度数组(VLA)等。同时,C99还强调了可移植性,要求编译器能够处理不同平台的差异。
4、C11标准
(1)C11标准:在2011年,ISO再次对C语言进行了修订,发布了ISO9899:2011标准,简称为C11。这个标准引入了一些新的特性,例如支持二进制字面量、线程局部存储(thread-local storage)、指定初始化器等。此外,C11还加强了对于并发编程的支持,提供了更好的线程同步机制。
5、C17标准
在2017年,ISO再次更新C语言标准,发布了ISO9899:2017标准,简称为C17。这个标准引入了一些新的特性,例如支持指定长度的数组、聚合类型(aggregate types)、通用初始化等。此外,C17还加强了对于嵌入式编程的支持,提供了更好的内存管理和异常处理机制。
6、总结
(1)需要注意的是,虽然C语言标准在不断更新,但是不同的编译器可能会有不同的支持程度和实现方式。因此,在实际开发中,需要参考具体的编译器文档和标准版本来使用合适的语言特性。
7、Keil中的C语言标准
(1)C89中,变量的定义必须放在作用域的开头,C99中,变量的定义可以放在任何地方。
(2)Keil中设置使用C99标准,如下图:
- 勾选C99 Mode
- 或者Misc Controls中添加--c99