C语言的标准和Gcc遵循标准

C语言的标准

K&R C

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

· 结构(struct)类型

· 长整数(long int)类型

· 无符号整数(unsigned int)类型

· 把运算符=+=-改为+=-=。因为=+=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。

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

ANSI CISO C

  C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。

C89C90

      1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 "Programming Language C"正式生效。这个版本的语言经常被称作"ANSI C",或有时称为"C89"(为了区别C99)。 在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90或者ISO C。因此,C89C90通常指同一种语言。 传统C语言到ANSI/ISO标准C语言的改进包括:

· 增加了真正的标准库  

· 新的预处理命令与特性  

· 函数原型允许在函数申明中指定参数类型  

· 一些新的关键字,包括 constvolatile signed  宽字符、宽字符串与字节多字符  

· 对约定规则、声明和类型检查的许多小改动与澄清

C99

        20003月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99C99新增了一些特性,如:  

· 支持不定长的数组,即数组长度可以在运行时决定。  

· 变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。  

· 初始化结构的时候允许对特定的元素赋值。  

· 允许编译器化简非常数的表达式。

· 取消了函数返回类型默认为 int 的规定。

  但是各个公司对C99的支持所表现出来的兴趣不同。GCC和其它一些商业编译器支持C99的大部分特性的时候,微软和Borland却似乎对此不感兴趣,他们把更多的精力放在了C++上。

C11

       201112月,ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即C11,它是C程序语言的最新标准。


Gcc遵循什么标准

GCC支持C90, 不完全支持C99在不指定C标准的情况下,GCC默认使用GNU C用一个式子表示GNU C:

GNU C = C90 + GNU Extensions = C90 + (some features in C99 + some features in C11)

可参考:http://www.cnblogs.com/emituofo/archive/2012/07/20/2600995.html



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值