暑期苏嵌嵌入式Linux两周短期学习第四结

在昨天的嵌入式linux应用开发的课堂上,梁老师带着我们重新浏览了在Linux中所需要使用到的C语言的知识内容。由于时间的原因,老师为我们大致讲解了关于C语言第一章和第二章的内容。其中的内容我已归纳在下方的照片中。

暑期苏嵌嵌入式Linux两周短期学习第四结

暑期苏嵌嵌入式Linux两周短期学习第四结

暑期苏嵌嵌入式Linux两周短期学习第四结

 

Q1、C语言的语法标准。

1、K&R C

  1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书

中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特

色:

结构(struct)类型

长整数(long int)类型

无符号整数(unsigned int)类型

把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。

  即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最低标准要求,许多老旧的编译仍然运行K&R C的标准。

ANSI C和ISO C

  C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,

但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上

写的。

2、C90 标准

        由于C语言被各大公司所使用(包括当时处于鼎盛时期的 IBM PC),因此到了 1989 年,C语言由美国国家标准协会

(ANSI)进行了标准化,此时C语言又被称为 ANSI C。而仅过一年,ANSI C 就被国际标准化组织 ISO 给采纳了。此时,C语言

在 ISO 中有了一个官方名称——ISO/IEC 9899: 1990。其中:

     a、 9899 是C语言在 ISO 标准中的代号,像 C++ 在 ISO 标准中的代号是 14882;

     b、而冒号后面的 1990 表示当前修订好的版本是在 1990 年发布的。

        对 于ISO/IEC 9899: 1990 的俗称或简称,有些地方称为 C89,有些地方称为 C90,或者 C89/90。不管怎么称呼,它们都指

代这个最初的C语言国际标准。这个版本的C语言标准作为 K&R C 的一个超集(即 K&R C 是此标准C的一个子集),把后来引入

的许多非官方特性也一起整合了进去。其中包括了从 C++ 借鉴的函数原型(Function Prototypes),指向 void 的指针,对国际

字符集以及本地语言环境的支持。在此标准中,尽管已经将函数定义的方式改为现在我们常用的那种方式,不过K&R的语法形式

仍然兼容。

3、C99标准

        在随后的几年里,C语言的标准化委员会又不断地对C语言进行改进,到了 1999 年,正式发布了 ISO/IEC 9899: 1999,简 

称为 C99 标准。C99 标准引入了许多特性,包括内联函数(inline functions)、可变长度的数组、灵活的数组成员(用于结构

体)、复合字面量、指定成员的初始化器、对IEEE754浮点数的改进、支持不定参数个数的宏定义,在数据类型上还增加了 long

long int 以及复数类型。毫不夸张地说,即便到目前为止,很少有C语言编译器是完整支持 C99 的。像主流的 GCC 以及 Clang 编

译器都能支持高达90%以上,而微软的 Visual Studio 2015 中的C编译器只能支持到 70% 左右。

4、C11标准

       

 2007 年,C语言标准委员会又重新开始修订C语言,到了 2011 年正式发布了 ISO/IEC 9899: 2011,简称为 C11 标准。C11标准

新引入的特征尽管没 C99 相对 C90 引入的那么多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic

selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持。

转载:http://c.biancheng.net/view/143.html