【整理】C语言的各种版本:C89,AMD1,C99,C11
2016-10-07 00:00
281 查看
【背景】
之前就知道了有个C90和C99。
后来又在:
【已解决】弄明白哪个版本的gcc才支持c11
期间知道有C11。
现在去整理一下,关于C语言的版本方面的更详细的内容。
参考内容:
Language Standards Supported by GCC
An Introduction to GCC – for the GNU compilers gcc and g++
1989年批准通过;
1990年发布;
后被批准为ISO标准:ISO/IEC 9899:1990
常叫做:C89
偶尔被叫做:C90
GCC中指定此版本所用参数时,有三种写法:
-ansi
-std=c90
-std=iso9899:1990
此C90后来在1994年,1996年,先后发布过对应的勘误表;
添加了一个有向图(digraphs)和宏:
此标准,常被叫做:AMD1
有时候被叫做:C94或C95
GCC中指定此版本时所用参数:
-std=iso9899:199409
常被叫做:C99
此C99标准未完成之前的草案,被叫做:C9X
GCC中指定此版本时所用参数有两种写法:
-std=c99
-std=iso9899:1999
此C99后来在2001年,2004年和2007年,先后发布过对应的勘误表;
GCC中指定此版本时所用参数有两种写法:
-std=c11
-std=iso9899:2011
此C11标准未完成之前的草案,被叫做:C1X
如果用上面列出来的那些-std参数的话,则会禁止,不使用这些扩展的。
如果想要在GCC中使用C扩展的话,所用的参数都是gnuXX类型的,分别是:
C90使用GCC的C扩展:-std=gnu90
C99使用GCC的C扩展:-std=gnu99
C11使用GCC的C扩展:-std=gnu11
当前C language dialect默认所用的参数是:-std=gnu90
但是当以后,GCC对于C99和C11支持程度真正完善后,则可能会换成对应的:-std=gnu99或-std=gnu11
支持C语言的所有库函数
支持C语言的基本库函数( + 各自版本对应的实现)
基本库函数包括:
如此,就很清晰明了了。
之前就知道了有个C90和C99。
后来又在:
【已解决】弄明白哪个版本的gcc才支持c11
期间知道有C11。
现在去整理一下,关于C语言的版本方面的更详细的内容。
参考内容:
Language Standards Supported by GCC
An Introduction to GCC – for the GNU compilers gcc and g++
C语言版本历史
C语言主要有三个版本:ANSI C==C89==C90
ANSI C standard==X3.159-19891989年批准通过;
1990年发布;
后被批准为ISO标准:ISO/IEC 9899:1990
常叫做:C89
偶尔被叫做:C90
GCC中指定此版本所用参数时,有三种写法:
-ansi
-std=c90
-std=iso9899:1990
此C90后来在1994年,1996年,先后发布过对应的勘误表;
AMD1==C94==C95
1995年,针对之前1900年发布的标准,发布了一个修订版;添加了一个有向图(digraphs)和宏:
__STDC_VERSION__
此标准,常被叫做:AMD1
有时候被叫做:C94或C95
GCC中指定此版本时所用参数:
-std=iso9899:199409
C99
1999年又发布了新标准:ISO/IEC 9899:1999常被叫做:C99
此C99标准未完成之前的草案,被叫做:C9X
GCC中指定此版本时所用参数有两种写法:
-std=c99
-std=iso9899:1999
此C99后来在2001年,2004年和2007年,先后发布过对应的勘误表;
C11
2011年发布了新标准:ISO/IEC 9899:2011GCC中指定此版本时所用参数有两种写法:
-std=c11
-std=iso9899:2011
此C11标准未完成之前的草案,被叫做:C1X
关于GCC中对于C的扩展
对于GCC来说,对于上述各个版本的C语言,都有一定的扩展(extension)如果用上面列出来的那些-std参数的话,则会禁止,不使用这些扩展的。
如果想要在GCC中使用C扩展的话,所用的参数都是gnuXX类型的,分别是:
C90使用GCC的C扩展:-std=gnu90
C99使用GCC的C扩展:-std=gnu99
C11使用GCC的C扩展:-std=gnu11
当前C language dialect默认所用的参数是:-std=gnu90
但是当以后,GCC对于C99和C11支持程度真正完善后,则可能会换成对应的:-std=gnu99或-std=gnu11
C语言库函数实现类型
ISO的C语言标准,定义了对于C语言的两种实现:支持C语言的所有库函数
支持C语言的基本库函数( + 各自版本对应的实现)
基本库函数包括:
<float.h>,
<limits.h>,
<stdarg.h>,
<stddef.h>
AMD1对应的是:<iso646.h>
C99对应的是:<stdbool.h>,<stdint.h>
C11对应的是:<stdalign.h>,<stdnoreturn.h>
总结C语言的各种版本
C语言的各种版本 |
主版本 | C89 | AMD1 | C99 | C11 |
别名 | C90 ANSI C X3.159-1989 ISO/IEC 9899:1990 | C94 C95 | ISO/IEC 9899:1999 | ISO/IEC 9899:2011 |
标准通过时间 | 1989年 | |||
标准发布时间 | 1990年 | 1995年 | 1999年 | 2011年 |
GCC使用此版本所用参数 | -ansi -std=c90 -std=iso9899:1990 | -std=iso9899:199409 | -std=c99 -std=iso9899:1999 | -std=c11 -std=iso9899:2011 |
GCC使用此版本且带C扩展时所用参数 | -std=gnu90 | -std=gnu99 | -std=gnu11 | |
C语言实现时所对应函数库 | <float.h> <limits.h> <stdarg.h> <stddef.h> | <iso646.h> | <stdbool.h> <stdint.h> | <stdalign.h> <stdnoreturn.h> |
相关文章推荐
- c语言之标准(K&RC 、c89、c99、c11)
- c++基于c11的新特性以及与c99版本C语言的区别
- 位图排序 C语言版本,C#版本,javascript版本(小整理了一下)
- 写的很好 链表的各种题目整理(C语言实现)
- C语言中的各种输入函数整理
- 链表的各种题目整理(C语言实现)
- C语言的标准(K&R C,ANSI C,C89,C90,C99)
- Android BroadCast 各种注册和发送方式的特点整理以及7.0以上版本的使用变化
- 整理C语言中各种类型指针的特性与用法
- K&R C、ANSI C、C89、C90、C95、C99和C11的区别联系
- C语言的标准(K&R C,ANSI C,C89,C90,C99)
- 链表的各种题目整理(C语言实现)
- C语言的各种版本
- 新浪微博url与mid相互转换(自己总结整理各种语言版本)
- ANSI c与C89,C99,C11的区别
- Symbian C++ 各种类型之间的转换!!(整理)
- Java的几个重要版本_动力节点Java学院整理
- MyEclipse各种版本的注册码
- 武林外传-经典台词-郑昀整理版本
- MyEclipse各种版本的注册码