既然ANSI只在1989年发布过C语言的标准,C(而不是

@[学习笔记, Head First C, C语言]起于Head First C 第2页 下,

我们常在书本、网页中看到ANSI C的字眼,它到底指什么意思呢?

1. 标准C语言

C语言诞生于20世纪70年代,年龄比我们自己还要大,期间产生了很多标准,但是各种编译器对标准的支持不尽相同。

ANSI C是使用的最广泛的一个标准,也是第一个正式标准,被称为“标准C语言”。ANSI C于1980年由美国国家标准局(American National Standards Institute,简称ANSI)对外发布,各种编译器几乎都完整支持ANSI C,市面上的书籍、大学里的教材、网上的教程大都以ANSI C为基础进行讲解,C语言中文网也不例外,也以ANSI C为基础。

在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。

科普一下:

C语言于1972年11月问世,1978年美国电话电报公司(AT&T)贝尔实验室正式发布C语言,1983年由美国国家标准局 (American National Standards Institute,简称ANSI)开始制定C语言标准,于1989年12月完成,并在1990年春天发布,称之为ANSI C,有时也被称为 C89 或 C90。

图片 1
C语言之父——里奇

在学习C语言之前,我们先了解一下C语言的历史。

C语言是一门通用的,模块化,程序化的编程语言,被广泛应用于操作系统和应用软件的开发。由于其高效和可移植性,适应于不同硬件和软件平台,深受开发员的青睐。


版权声明:本文为作者原创文章,转载时请注明文章来源,否则视为侵权,并按法律程序处理!

书中简介:

ANSI C 始于20世纪80年代后期,适用最古老的代码。``C99标准始于1999年,有了很大的改进。``C11是2011年新发布标准。不同版本的标准之间的差别不是很大

网上关于GNU C于ANSI C的博文连接,主要简介了他们之间的一些区别

由于有不同版本的C,以便日后区分和记忆,以时间年代序进行梳理,以便日后记忆。

1978年,丹尼斯•里奇(Dennis Ritchie)布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。

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

ANSI:美国国家标准学会(American National Standards Institute)C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。一些软件开发者使用ISO C,还有一些使用 Standard C

C891983年,ANSI组成了一个委员会,X3J11,为了创立 C 语言的标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 "Programming Language C"正式生效。因为这个标准是1989年发布的,所以一般简称C89标准。有些人也把C89标准叫做ANSI C,因为这个标准是ANSI发布的

C90在1990年,ANSI C89标准被ISOIEC采纳为国际标准,名叫ISO/IEC 9899:1990 - Programming languages -- C[2] ,有些人简称C90标准。因此,C89和C90通常指同一个标准,一般更常用C89这种说法。

ISO:国际标准化组织(International Organization for Standardization)IEC:国际电工委员会(International Electrotechnical Commission)

C99在2000年3月,ISOIEC采纳了第二个C语言标准,名叫ISO/IEC 9899:1999 - Programming languages -- C,简称C99标准

C11在2011年12月,ISOIEC采纳了第三个C语言标准,名叫ISO/IEC 9899:2011 - Information technology -- Programming languages -- C,简称C11标准它是C程序语言的最新标准。

ANSI C严格来说,应当是指美国国家标准学会对C语言发布的标准。但实际上,ANSI只在1989年发布过C语言的标准,后面的C语言标准都是由国际标准化委员会和国际电工委员会审定和发布。

C语言早期发展

1969-1973年在美国电话电报公司(AT&T)贝尔实验室开始了C语言的最初研发。根据C语言的发明者丹尼斯·里奇 (Dennis Ritchie) 说,C 语言最重要的研发时期是在1972年。

说明:丹尼斯·里奇(Dennis Ritchie),C语言之父,UNIX之父。1978年与布莱恩·科尔尼干(Brian Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》,现在此书已翻译成多种语言,成为C语言方面最权威的教材之一。2011年10月12日(北京时间为10月13日),丹尼斯·里奇去 世,享年70岁。

C语言之所以命名为C,是因为C语言源自Ken Thompson发明的 B语言,而B语言则源自BCPL语言。

C语言的诞生是和UNIX操作系统的开发密不可分的,原先的UNIX操作系统都是用汇编语言写的,1973年UNIX操作系统的核心用C语言改写,从此以后,C语言成为编写操作系统的主要语言。

写在前面:K&R C不用说。个人以为,我们平常说的标准C,指的是ANSI C,ISO C,C89,C90。

做C语言开发的人,经常会遇到“ANSI C”、“ISO C”与“Standard C”三种术语,经常会让人傻傻分不清楚。博主之前按也是搞不清三者的关系,于是某天下定决心,一定要搞清楚三者的关系,先百度上搜下。下面是在百度百科上搜索关键字“ANSI C”得到的结果:

参考资料链接:

C语言标准C–K&R C 与 ANSI C的区别C语言的各种版本:C89,AMD1,C99,C11ANSI C与C89、C99、C11区别差异

图片 2042304010325958.png

GNU编译器套件(GNU Compiler Collection)包括CC++Objective-CFortranJavaAdaGo语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。

GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如LinuxBSDMac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows

因为它原本只能处理C语言

既然ANSI只在1989年发布过C语言的标准,那为什么现在还经常使用ANSI C呢,难道我们还在使用C89标准吗?不是的,我们今天使用的是由ISO/IEC发布的C11标准。但由于ANSI C是第一个C标准,并有巨大影响,所以ANSI C这个名字仍被广泛使用。可以说,ANSI C就是Standard C。

K&R C

1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)出版了一本书,名叫《The C Programming Language》(中文译名为《C程序设计语言》)。这本书被C语言开发者们称为“K&R”,很多年来被当作C语言的非正式的标准说明。人们称 这个版本的C语言为“K&R C”。

1988年丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)修改此书,出版了《The C Programming Language》第二版,第二版涵盖了ANSI C语言标准。第二版从此成为大学计算机教育有关C语言的经典教材,多年后也没再出现过更好的版本。


================================分割线========================================

GCC支持C90,不完全支持C99。在不指定C标准的情况下,GCC默认使用GNU C。GNU C = C90 + GNU Extensions = C90 + (some features in C99 + some features in C11)。默认情况下,GCC使用-std=gnu90。如果按照C99或C11标准编写C语言程序的话,GCC编译时需要添加编译器选项-std=gnu99或-std=gnu11

ANSI C 和 ISO C

1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。

为统一C语言版本,1983年美国国家标准局(American National Standards Institute,简称ANSI)成立了一个委员会,来制定C语言标准。1989年C语言标准被批准,被称为ANSI X3.159-1989 "Programming Language C"。这个版本的C语言标准通常被称为ANSI C。又由于这个版本是 89 年完成制定的,因此也被称为 C89。

后来 ANSI 把这个标准提交到 ISO(国际化标准组织),1990年被 ISO 采纳为国际标准,称为 ISO C。又因为这个版本是1990年发布的,因此也被称为C90。

ANSI C(C89) 与 ISO C(C90)内容基本相同,主要是格式组织不一样。

因为 ANSI 与 ISO 的C标准内容基本相同,所以对于C标准,可以称为ANSI C,也可以说是ISO C,或者 ANSI / ISO C。

注意:以后大家看到 ANSI C、ISO C、C89、C90,要知道这些标准的内容都是一样的。

目前,几乎所有的开发工具都支持 ANSI / ISO C 标准。是C语言用得最广泛的一个标准版本。

K&R C

ANSI C_百度百科

例如使用 for(int i = 0; i < 10; i++) ... 这样的语句,只有加上编译器选项-std=gnu99,gcc才能编译通过。

C99

在ANSI C标准确立之后,C语言的规范在很长一段时间内都没有大的变动。1995年C程序设计语言工作组对 C语言进行了一些修改,成为后来的1999年发布的 ISO/IEC 9899:1999标准,通常被成为C99。

但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的時候,微软和Borland却似乎对此不感兴趣。

说明:GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。

综上所述,目前广泛使用的C语言版本是 ANSI / ISO C,最经典的C语言教材是《C程序设计语言(The C Programming Language) 第二版》。

图片 3
C语言版本更迭史


1.C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。一些软件开发者使用ISO C,还有一些使用 Standard C。

本文由必威发布于必威-编程,转载请注明出处:既然ANSI只在1989年发布过C语言的标准,C(而不是

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。