C语言简述

来源:互联网 发布:手机mac地址怎么查 编辑:程序博客网 时间:2024/05/02 21:01

C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年 由 肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。C语言是世界上最流行、使用最广泛的高级程序设计语言之一。

C语言的特点:(为什么嵌入式开发选择C语言?)

1)具有出色的可移植性,能够在多种不同体系的软硬件平台上运行。UNIXMS-DOSMicrosoft WindowsLinux操作系统都的内核都采用C语言

                       (可移植性:一个平台的代码到另一个平台上仍可以运行。可移植性好:移植到另一个平台上要修改的程序越少越好)

2)具有简介紧凑,使用灵活的语法机制,直接访问硬件。虽然说汇编也能直接访问硬件,但是汇编是低级语言,不能实现复杂的功能。汇编语言一般用于对比较简单的硬件做初始化。

3)具有很高的运行效率。相对于运行速率更高的汇编语言,c语言是高级语言,能实现比较复杂的功能。相对于其他高级语言,c语言属于高级语言中的低级语言,能直接访问硬件,所以它的运行效率可达汇编语言的80%,而其他高级语言只能达到c语言的80%。并且c语言编译之后产生机器语言,直接被硬件识别,不需要像JAVA那样在运行时程序翻译成机器语言。

 

C语言作为一种开发语言,在嵌入式开发中的作用是:应用工程师,驱动工 程师,BSPkernel工程师

C语言是面向过程的语言,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

 

C语言标准:(选择编译器时要知道其支持的标准)

1K&RC1978年,丹尼斯里奇(Dennis Ritchie)和布莱恩柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”。K&R C主要介绍了以下特色: 

· 结构(struct)类型

· 长整数(long int)类型

· 无符号整数(unsigned int)类型

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

2) C89(ANSIC)

1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,这个版本的语言经常被称作"ANSI C",或有时称为"C89"(为了区别C99)。 1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90或者ISO C。因此,C89C90通常指同一种语言。 传统C语言到ANSI/ISO标准C语言的改进包括:

· 增加了真正的标准库  

· 新的预处理命令与特性  

· 函数原型允许在函数申明中指定参数类型  

· 一些新的关键字,包括 constvolatilesigned  宽字符、宽字符串与字节多字符 

· 对约定规则、声明和类型检查的许多小改动与澄清

3)C99

· 20003月,ANSI采纳了 ISO/IEC 9899:1999标准。这个标准通常指C99C99新增了一些特性,如: 

· 支持不定长的数组,即数组长度可以在运行时决定。  

· 变量声明不必放在语句块的开头,for 语句提倡写成for(int i=0;i<100;++i) 的形式,即i只在 for语句块内部有效。  

· 初始化结构的时候允许对特定的元素赋值。  

· 允许编译器化简非常数的表达式。

· 取消了函数返回类型默认为 int 的规定。

目前最多的编译器支持此标准

4)C11

201112月,ANSI采纳了 ISO/IEC 9899:2011标准。这个标准通常即C11,它是C程序语言的最新标准。C11制定了许多可选的特性,使得更容易遵守核心的语言标准。新的标准修提高了对C++的兼容性,并将新的特性增加到C语言中。新功能包括支持多线程, 基于ISO/IEC TR 19769:2004规范下支持Unicode,提供更多用于查询浮点数类型特性的宏定义和静态声明功能。这些新特性包括:

 ● 对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及<stdalign.h>头文件。

_Noreturn 函数标记,类似于 gcc __attribute__((noreturn))

_Generic 关键字。

● 多线程(Multithreading)支持,包括:_Thread_local存储类型标识符,<threads.h>;头文件,里面包含了线程的创建和管理函数。

 ● 增强的Unicode的支持。基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_tchar32_t数据类型,提供了包含unicode字符串转换函数的头文件<uchar.h>.

● 删除了 gets()函数,使用一个新的更安全的函数gets_s()替代。

● 增加了边界检查函数接口,定义了新的安全的函数,例如 fopen_s()strcat_s()等等。 ● 增加了更多浮点处理宏。

 ● 匿名结构体/联合体支持。这个在gcc早已存在,C11将其引入标准。

● 静态断言(Static assertions)_Static_assert(),在解释#if #error 之后被处理。

 ● 新的 fopen()模式,(“…x)。类似POSIX 中的O_CREAT|O_EXCL,在文件锁中比较常用。

● 新增 quick_exit()函数作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作。

 ● _Atomic类型修饰符和<stdatomic.h>;头文件。

Ioswindows的部分软件支持此标准。

GCC支持的标准

GCC支持C90,不完全支持C99在不指定C标准的情况下,GCC默认使用GNU C用一个式子表示GNU C:

GNU C = C90 + GNU Extensions = C90 + (some features in C99 + some features in C11)

GCCGNU Compiler CollectionGNU编译器套装),是一套由GNU开发的编程语言编译器。原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理FortranPascalObjective-CJavaAda,以及Go与其他语言。

0 0
原创粉丝点击