本文主要讲述标准C/C++语言的发展历程,各个版本的发展以及支持该标准的一些编译器
1.发展史
在谈标准C/C++语言发展史之前,我们不得不先谈谈标准,既然是标准那就是说大家都得遵循,当然标准一般只是一个最小子集,再演化一下到各个国家就出现国家标准和行业标准了,本文可能提到的标准化组织主要包括ISO(International Organization for Standardization国际标准化组织www.iso.org/iso/home.html)和ANSI(American National Standards Institute美国国家标准学会www.ansi.org),其中ISO故名思议就是为技术和商业制定一系列标准的非政府组织,包括各个会员国的标准化组织和主要机构,而ANSI就是制定美国国家标准的非盈利组织,是ISO和IEC(International Electrotechnical Commission国际电工委员会www.iec.ch)成员。ISO和IEC是相互独立的,但又紧密相关,IEC主要负责电气工程和电子工程领域的国际标准化组织,而其它由ISO负责。
标准C/C++最终也是逃脱不了和ISO的关系。C语言最早在1970年由Dennis Ritchie(丹尼斯·里奇)在Ken Thompson(肯·汤普逊)所开发的B语言基础上发展和完善起来的。由于C由于的高效、灵活等特性,在1970-1980年得到广泛的应用并且衍生出很多版本,ANSI为了避免各个厂商产生的差异,在80年代成立了一个委员会来制定C语言的标准,最终在1989年被批准(ANSI X3.159-1989),该标准通常被称为ANSI C或C89。在1990年,ISO成立组织来规定C语言的ISO标准即ISO/IEC 9899:1990,这个标准通常被称为C90,该标准在C89的基础上稍微改动而来,后来也被ANSI所采用。在1999年,ISO发布了ISO/IEC 9899:1999标准,也称作C99。2011年,ISO发布新标准ISO/IEC 9899:2011,称作C11。因此在本文写作的时候最新C语言标准为C11。表一简要说明C的发展阶段。
表一 C的主要发展历程
时间 | 创立者 | 版本号 |
1970年 | Dennis Ritchie | C |
1989年 | ANSI | ANSI C/C89 |
1999年 | ISO | C99 |
2011年 | ISO | C11 |
C++由Bjarne Stroustrup(比雅尼·斯特劳斯特鲁普)在1979年构思并开始发明的,最早被叫做C with Classes,可以说C++起源于C。1983年,C with Classes改名称为C Plus Plus即我们所说的C++。随之C++的发展,一直到1998年ANSI-ISO才发布该语言的标准即ISO/IEC 14882:1998,称为C++98。在03年发布了C++标准的修正版本即ISO/IEC 14882:2003即所谓的C++03。2007年,一份C++技术报告被加入即ISO/IEC TR 19768:2007,也称为C++TR1。目前ISO发布的最新C++标准为2011年发布的ISO/IEC 14882:2011,称作C++11。表二简要说明C++的发展阶段。
表二C++的主要发展过程
时间 | 创立者 | 版本号 |
1979年 | Bjarne Stroustrup | C with Classes |
1998年 | ISO | ISO/IEC 14882:1998或C++98 |
2003年 | ISO | ISO/IEC 14882:2003或C++03 |
2007年 | ISO | ISO/IEC TR 19768:2007或C++TR1 |
2011年 | ISO | ISO/IEC 14882:2011或C++11 |
2.支持的一些编译器
目前来说,在windows平台下基本都利用IDE(Integrated Development Environment集成开发环境)方式开发,所以可能很少去关心IDE实际调用的编译器,像windows下的VC,VS,Borland C++等工具。因此在这,只介绍GCC(GNU Compiler Collection,GNU编译器集合)和G++这个两个编译器,它们可以在linux下运用,同时也被移植到了Windows下,其中比较流行的如Mingw和Cygwin。
GCC和G++都是C&C++的编译器,大家可能误认为GCC是C的编译器,而G++是C++的编译器,其实不然。当然它们也是有区别的,当我们的文件以.C结尾,采用GCC编译时认为是C语言,而用G++时则认为是C++语言,当文件以.CPP结尾时,GCC和G++都认为是C++的。