1) 最初的 ANSI C 标准 (X3.159-1989) 在 1989 年被批准,并于 1990 年发布。稍后这个标准被接受为 ISO 标准 (ISO/IEC 9899:1990) 。虽然 ISO 标准将 ANSI 标准的某些章节重新编号并变为条款,但是两者实际上并无区别。不论是 ANSI 标准还是 ISO 标准,通常都称之为 C89 ,偶尔也因为发布日期而被叫做 C90 。 ANSI 标准 ( 非 ISO 标准 ) 同时附带了 rationale 文档。可以使用 -ansi , -std=c89 或 -std=iso9899:1990 选项指定 GCC 使用 C89 标准;可以使用 -pedantic 选项来得到所有的诊断信息( 或者使用 -pedantic-errors 选项以使 wangning 变为 error) 。PS:pedantic adj. 1. 卖弄学问的 2. 学究式的,迂腐的

2) 新的 ISO C 标准是 1999 年发布的 ISO/IEC 9899:1999 ,通常称之为 C99 。 GCC 目前不完整的支持这个版本。详情请参考 http://gcc.gnu.org/gcc-4.4/c99status.html 。为了指定 GCC 使用这个版本的 C 标准,需要 -std=c99 或 -std=iso9899:1999 选项。

3) 默认情况下, GCC 提供了一些 C 语言的扩展,极少的几处会与 C 标准冲突。关于这些冲突请参考 “ C 语言家族的扩展 ” 一节。使用上述的 -std 选项将会关闭这些有冲突的扩展。你也可以显式的使用选项 -std=gnu89 ( 对应 C89 的 GNU 扩展 ) 或 -std=gnu99 ( 对应 C99 的 GNU 扩展 ) 来选择对应版本的扩展功能。如果没有给出 C 语言 “ 方言 ” 选项,将默认的使用 -std=gnu89 ;若要使用C99的特性要设置-std=gnu9x。

gcc下的语言规范设置:
-std=iso9899:1990,-ansi或-std=c89 (三者完全等同)来指定完全按照c89规范,而禁止gcc对c语言的扩展。
-std=iso9899:199409 使用C95规范
-std=c99 或者 -std=iso9899:1999 使用C99规范。
-std=gnu89 使用c89规范加上gcc自己的扩展(目前默认)
-std=gnu99 使用c99规范加上gcc自己的扩展

4)-std= 选择C语言编译标准

-std=

A value for this option must be provided; possible values are

`c90'
`c89'
`iso9899:1990'
Support all ISO C90 programs (certain GNU extensions that conflict with ISO C90 are disabled). Same as -ansi for C code. 
`iso9899:199409'
ISO C90 as modified in amendment 1. 
`c99'
`c9x'
`iso9899:1999'
`iso9899:199x'
ISO C99. Note that this standard is not yet fully supported; seehttp://gcc.gnu.org/c99status.html for more information. The
names `c9x' and `iso9899:199x' are deprecated. 
`c1x'
ISO
C1X, the draft of the next revision of the ISO C standard. Support is
limited and experimental and features enabled by this option may be
changed or removed if changed in or removed from the standard draft. 
`gnu90'
`gnu89'
GNU dialect of ISO C90 (including some C99 features). This is the default for C code. 
`gnu99'
`gnu9x'
GNU dialect of ISO C99. When ISO C99 is fully implemented in GCC, this will become the default. The name `gnu9x' is deprecated. 
`gnu1x'
GNU
dialect of ISO C1X. Support is limited and experimental and features
enabled by this option may be changed or removed if changed in or
removed from the standard draft. 
`c++98'
The 1998 ISO C++ standard plus amendments. Same as -ansi for C++ code. 
`gnu++98'
GNU dialect of -std=c++98. This is the default for C++ code. 
`c++0x'
The
working draft of the upcoming ISO C++0x standard. This option enables
experimental features that are likely to be included in C++0x. The
working draft is constantly changing, and any feature that is enabled by
this flag may be removed from future versions
of GCC if it is not part of the C++0x standard. 
`gnu++0x'
GNU dialect of -std=c++0x. This option enables experimental features that may be removed in future versions of GCC.

 

最新文章

  1. ImageLoader图片加载
  2. [HIve - LanguageManual] Transform [没懂]
  3. 用Apache Kafka构建流数据平台
  4. Jquery 限制文本框输入字数【转】
  5. codevs 3119 高精度练习之大整数开根 (各种高精+压位)
  6. 14、SQL Server 存储过程
  7. HPUX 11.31 MC-SG SGeRAC配置
  8. vs文件上传失败--超过最大字符限制
  9. JUnit测试提示Java.lang.Exception: No runnable methods
  10. 【C++】读取参数的类
  11. 如何系统学习知识图谱-15年+IT老兵的经验分享
  12. sqli-labs(六)
  13. Jenkins--Credentials添加证书从git上拉代码
  14. [Go] Beego 模板嵌套 使用总结
  15. laravel5.4安装的报错
  16. Java枚举源码分析
  17. sprintf和sscanf
  18. 『ACM C++』 PTA 天梯赛练习集L1 | 018-020
  19. Javascript 初学笔记
  20. 外行人都能看懂的SpringCloud

热门文章

  1. js--原型和原型链相关问题
  2. Linux下Matlab的安装
  3. 关于 下载 nfs-utils时的 gssproxy conflicts with selinux-policy-3.13.1-102.el7.noarch 错误
  4. SSM完整项目(内含源码)
  5. Day01_05_Java第一个程序 HelloWorld - java类规则
  6. 功能:Java注解的介绍和反射使用
  7. table边框完全去掉的方法
  8. 【synchronized锁】通过synchronized锁 反编译查看字节码指令分析synchronized关键字修饰方法与代码块的区别
  9. POJ3687拓扑排序+贪心
  10. hdu3706基础的单调队列