C语言简介
C语言是在20世纪70年代作为系统编程语言而开发的,即使过了这么久,它仍然非常流行。系统语言的设计是为了在提供高级编程功能的同时,实现性能和对底层硬件的轻松访问。虽然其他语言可能提供较新的语言功能,但它们的编译器和库通常是用C语言编写的。
根据TIOBE指数,自2001年以来,C语言一直是最受欢迎的编程语言或第二受欢迎的编程语言。C语言的流行很可能归功于该语言的几个原则,被称为C语言的精神。
- 相信程序员。一般来说,C语言假设你知道自己在做什么。
- 不要阻止程序员做需要做的事情。因为C语言是必须能够处理各种低层次的任务。
- 小而简单。该语言被设计成与硬件相当接近,并有一个小的足迹。
- 不只提供一种方法来进行一项操作。也被称为机制保护,C语言试图限制重复机制的引入。
- 快速。让你写出最佳效率的代码是首要任务。确保代码可移植、安全和可靠的责任被委托给程序员。
C语言的简史
- C编程语言是由Dennis Ritchie和Ken Thompson于1972年在贝尔电话实验室开发的。
- Brian Kernighan与Dennis Ritchie合著了《C编程语言》(K&R 1988)。
- 1983年,美国国家标准协会(ANSI)成立了X3J11委员会来建立一个标准的C规范。
- 1989年,C标准被批准为ANSI X3.159-1989,"编程语言C"。这个1989年版本的语言被称为ANSI C或C89。
- 1990年,ANSI C标准被国际标准化组织(ISO)和国际电工委员会(IEC)的一个联合技术委员会采用(未作改动),并作为C标准的第一版C90(ISO/IEC9899:1990)出版。
- C标准的第二版C99在1999年出版(ISO/IEC 9899:1999)
- 第三版C11在2011年出版(ISO/IEC 9899:2011)。
- C标准的最新版本是第四版,于2018年作为C17(ISO/IEC 9899:2018)出版。
- ISO/IEC正在开发一个被称为C2x的新的主要修订版。根据JetBrains的2018年民意调查数据,52%的C程序员使用C99,36%使用C11,23%使用C的嵌入式版本。
C标准
C标准(ISO/IEC 9899:2018)定义了该语言,是语言行为的最终权威。虽然该标准可能是晦涩难懂的,但如果你打算编写可移植的、安全的和有保障的代码,你就需要了解它。C标准为实现提供了很大程度的自由度,使它们在各种硬件平台上都能达到最佳效率。实现是C标准中用来指代编译器的术语,定义如下。
一套特定的软件,在特定的控制选项下在特定的翻译环境中运行,为特定的执行环境进行程序翻译,并支持功能的执行。
这个定义表明,每一个具有特定命令行标志的编译器,连同C标准库,都被认为是一个独立的实现,不同的实现可以有明显不同的实现定义的行为。这在GNU编译器集合(GCC)中很明显,它使用-std=标志来确定语言标准。这个选项的可能值包括c89、c90、c99、c11、c17、c18和c2x。默认值取决于编译器的版本。如果没有给出C语言选项,GCC10的默认值是-std=gnu17,它提供对C语言的扩展。为了实现可移植性,请指定你所使用的标准。为了获得新的语言功能,指定一个最新的标准。在GCC 8及以后的版本中,一个好的选择(2019年)是-std=c17。
因为实现有如此多的行为,而且其中一些行为是未定义的,所以仅仅通过编写简单的测试程序来检查行为是无法理解C语言的。在不同的平台上由不同的实现编译时,代码的行为可能会有所不同,甚至同一实现使用不同的标志集或不同的C标准库实现也会有所不同。代码行为甚至在不同版本的编译器之间也会有所不同。C标准是唯一的文件,它规定了哪些行为对所有的实现都是有保证的,以及在哪些方面你需要对可变性进行规划。这主要是在开发可移植代码时关注的问题,但也会影响你的代码的安全性。










网友评论