【整理】C语言的各种版本:C89,AMD1,C99,C11 | 您所在的位置:网站首页 › c99的编译器 › 【整理】C语言的各种版本:C89,AMD1,C99,C11 |
【背景】 之前就知道了有个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==C90ANSI C standard==X3.159-1989 1989年批准通过; 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:199409C99 1999年又发布了新标准:ISO/IEC 9899:1999 常被叫做:C99 此C99标准未完成之前的草案,被叫做:C9X
GCC中指定此版本时所用参数有两种写法: -std=c99-std=iso9899:1999
此C99后来在2001年,2004年和2007年,先后发布过对应的勘误表; C11 2011年发布了新标准:ISO/IEC 9899:2011 GCC中指定此版本时所用参数有两种写法: -std=c11-std=iso9899:2011此C11标准未完成之前的草案,被叫做:C1X 关于GCC中对于C的扩展 对于GCC来说,对于上述各个版本的C语言,都有一定的扩展(extension) 如果用上面列出来的那些-std参数的话,则会禁止,不使用这些扩展的。 如果想要在GCC中使用C扩展的话,所用的参数都是gnuXX类型的,分别是: C90使用GCC的C扩展:-std=gnu90C99使用GCC的C扩展:-std=gnu99C11使用GCC的C扩展:-std=gnu11
当前C language dialect默认所用的参数是:-std=gnu90 但是当以后,GCC对于C99和C11支持程度真正完善后,则可能会换成对应的:-std=gnu99或-std=gnu11 C语言库函数实现类型 ISO的C语言标准,定义了对于C语言的两种实现: 支持C语言的所有库函数支持C语言的基本库函数( + 各自版本对应的实现) 基本库函数包括:,,,AMD1对应的是:C99对应的是:,C11对应的是:,总结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语言实现时所对应函数库
如此,就很清晰明了了。 |
CopyRight 2018-2019 实验室设备网 版权所有 |