C Language Standard

C语言标准

像C语言这种使用如此广泛编程语言,语法的制定,标准库函数接口的约定等等都是需要标准话的(其实所有编程语言都有相应的组织负责语言标准化工作的),语言制定标准化是保证语言可移植性的前提,C语言如此流行跟其深入的标准化密不可分

C语言标准的发展历程

  1. C语言的第一个ANSI C标准审批于1989年,出版于1990年,并与1990年被ISO组织ISO标准化(ISO标准与ANSI C并无技术上的差异)故而此标准常被称为ANSI-C或C89或C90或iso9899:1990

  2. 在1995年推出了1990年的修订版,修订版中添加了digraphs(我也不知道这是嘛)和__STDC_VERSION__,该修订版常被称为AMD1或C94或C95

  3. 在1990年推出了新的ISO C标准,常被成为C99或iso9899:1999

GCC与C标准化

首先要清楚GCC对支持语言标准的设计思想是尽量支持语言标准(标准的多个版本都被支持)的同时提供GCC特有的扩展特色(与C标准冲突极少),你可以在代码编译时通过不同的选项控制GCC使用哪个标准或支持哪个扩展特色

使用标准C

  1. 要想使用1990年的标准C,使用选项: -ansi或者-std=c89或-std=iso9899:1990

  2. 要想使用1995年的标准C修订版,使用选项: -std=iso9899:199409

  3. 要想使用1999年的标准C,使用选项: -std=c99或-std=iso9899:1999,但值得注意的是GCC对该版本标准没有提供完全的支持

使用GCC扩展标准

用法: 前面提到GCC除了对标准C提供支持外,自己还提供了扩展语法特色支持,使用带有扩展特色支持的C标准,例如: -std=gnu89或-std=gnu99(分别是带有GCC扩展特色的C89和C99)

检测扩展语法: GCC提供了选项-pedantic可以在编译时将有GCC提供的语言扩展特色报告为警告,如果你想将扩展特色报告为错误,则使用-pedantic-errors选项即可

Xiao Wenbin
Xiao Wenbin
Natural Language Processing Engineer

My research interests include machine learning, information retrieval and natural language processing.

Related