文章插图
C语言的三个标准
目前,有许多C实现可用 。在理想情况下,编写C程序时,假设该程序中未使用机器特定的编程技术,那么它的运行情况在任何实现中都应该相同 。要在实践中做到这一点,不同的实现要遵循同一个标准 。C语言发展之初,并没有所谓的C标准 。1978年,布莱恩·柯林汉(BrianKernighan)和丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language(《C语言程序设计》)第1版是公认的C标准,通常称之为K&R C或经典C 。特别是,该书中的附录中的“C语言参考手册”已成为实现C的指导标准 。例如,编译器都声称提供完整的K&R实现 。虽然这本书中的附录定义了C语言,但却没有定义C库 。与大多数语言不同的是,C语言比其他语言更依赖库,因此需要一个标准库 。实际上,由于缺乏官方标准,UNIX实现提供的库已成为了标准库 。
1)第1个ANSI/ISOC标准随着C的不断发展,越来越广泛地应用于更多系统中,C社区意识到需要一个更全面、更新颖、更严格的标准 。鉴于此,美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新标准,并于1989年正式公布 。该标准(ANSI-C)定义了C语言和C标准库 。
国际标准化组织于1990年采用了这套C标准(ISO-C) 。ISO-C和ANSI-C是完全相同的标准 。ANSI/ISO标准的最终版本通常叫作C89(因为ANSI于1989年批准该标准)或C90(因为ISO于1990年批准该标准) 。另外,由于ANSI先公布C标准,因此业界人士通常使用ANSI-C 。在该委员会制定的指导原则中,最有趣的可能是:保持C的精神 。委员会在表述这一精神时列出了以下几点:
- 信任程序员;Trust the programmer.
- 不要妨碍程序员做需要做的事;Don't prevent the programmer from doing what needs to be done.
- 保持语言精练简单;Keep the language small and simple.
- 只提供一种方法执行一项操作;Provide only one way to do an operation.
- 让程序运行更快,即使不能保证其可移植性 。Make it fast, even if it is not guaranteed to be portable.
2)C99标准1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准 。该委员会遵循了最初C90标准的原则,包括保持语言的精练简单 。委员会的用意不是在C语言中添加新特性,而是为了达到新的目标 。
- 第1个目标是,支持国际化编程 。例如,提供多种方法处理国际字符集 。
- 第2个目标是,“调整现有实践致力于解决明显的缺陷” 。因此,在遇到需要将C移至64位处理器时,委员会根据现实生活中处理问题的经验来添加标准 。
- 第3个目标是,为适应科学和工程项目中的关键数值计算,提高C的适应性,让C比FORTRAN更有竞争力 。
3)C11标准维护标准任重道远 。标准委员会在2007年承诺C标准的下一个版本是C1X,2011年终于发布了C11标准 。此次,委员会提出了一些新的指导原则 。出于对当前编程安全的担忧,不那么强调“信任程序员”目标了 。而且,供应商并未像对C90那样很好地接受和支持C99 。这使得C99的一些特性成为C11的可选项 。因为委员会认为,不应要求服务小型机市场的供应商支持其目标环境中用不到的特性 。另外需要强调的是,修订标准的原因不是因为原标准不能用,而是需要跟进新的技术 。例如,新标准添加了可选项支持当前使用多处理器的计算机 。
【简述C语言的三个标准:ANSI/ISO C99 C11】
推荐阅读
- 为什么少女会长白头发 少女长白发的原因分析
- 灰翅鸫叫声 白喉短翅鸫的鸣叫期
- 全球大洪水 全球变暖导致的洪水泛滥
- 马是躺着睡觉的还是站着睡觉的 马躺着睡觉是怎么回事
- 两只脚走路的蜥蜴 没有脚的蜥蜴
- 葛的功效与作用是什么,玉蝴蝶和胖大海的功效与作用及其饮用方法是什么
- Python 为什么用 # 号作注释符?
- 古代普洱茶膏的特点,清宫普洱茶膏的制作
- 粉玫瑰花茶的功效,多喝玫瑰花茶对女性是极好的
- 枸杞山楂红枣,红枣枸杞蜂蜜茶的作法