ANSI C、ISO C、Standard C、C89、C90、C99

来源:互联网 发布:opencv tld算法 编辑:程序博客网 时间:2024/05/22 17:10

ANSI C、ISO C、Standard C、C89、C90、C99

ANSI C、ISO C 和Standard C是由ANSI(AmericanNational Standards Institute,美国国家标准学会)或ISO(International Organization for Standardization,国际标准化组织)等标准机构发布的C语言标准。

根据制定的语言标准开发软件有助于提高软件在编译器间的可移植性。

C语言的第一个语言标准是由ANSI(AmericanNational Standards Institute,美国国家标准学会)发布。后来,ISO(International Organization for Standardization,国际标准化组织)采纳了这份标准并发布其修订版。

ANSI C特指ANSI发布的第一版C语言标准。ISO C则指ISO发布的C语言标准。StandardC则是相对于ANSI C和ISO C的一个泛称,表示遵循标准规范的C。

 

C89(ANSI C)

       C语言的第一个标准是由ANSI发布。在1983年,ANSI成立X3J11委员制定C语言标准规范。该委员会在1989年完成C语言标准的制定,并作为ANSIX3.159-1989 "Programming Language C"正式生效。这个标准被称作"ANSIC"或"C89"(为了区别于C99)。

C90

在1990年,ISO根据ANSI C标准(仅进行少量的格式更改)发布ISO/IEC 9899:1990。这个版本被称为C90。C89和C90在本质上是同一种语言标准。

C95

在1995年,ISO根据ANSI C标准发布了其修订版ISO/IEC 9899/AMD1:1995,也称C95。该版本除了修改ANSI C标准中的错误外,还添加了一些语言特性,如提供宽字符(wide character)、制定标准宏__STDC_VERSION__规范等。

C99

在2000年,ANSI采纳了ISO / IEC 9899:1999标准,该标准通常称为C99。相比于之前的标准,本标准显著增加了一些特性,如:

       提供新的内置数据类型:longlong,_Bool等;

添加新的核心语言功能,如静态数组索引,可变长度数组,可变宏等;

添加新的库头文件,如stdint.h、tgmath.h、complex.h等;

删除了几个危险的C89语言功能,如隐式函数声明和隐式int等;

为了支持C11标准,ANSI和ISO分别撤回该标准。

C11

C11”是C语言的当前标准。相比于之前的标准,C11的显著特性有:支持Unicode、提供跨平台多线程API(threads.h)、在语言内核和库文件stdatomic.h中支持原子类型。ISO为C11发布了一个技术勘误:

ISO / IEC 9899:2011 / Cor 1:2012

 

参考:

https://en.wikipedia.org/wiki/ANSI_CANSI C

https://zh.wikipedia.org/wiki/ANSI_CANSI C

0 0