C/C++发展很多版本标准,sunsky(本人)早就想理理std标准了,让大家有个清晰的了解。

适用C(或C源代码,如C ++,Objective-C和Objective-C ++)的标准:

-ansi
在C模式下,这相当于 -std = c90的。在C ++模式下,相当于-std = c ++ 98的。

这将关闭不兼容的与ISO C90(编译时C代码),或标准的C ++(编译C ++时代码)GCC的某些特征,如asm与typeof关键字,以及预定义的宏如unix和vax标识系统的类型你正在使用。它也可以使用不希望的和很少使用的ISO三联图特征。对于C编译器,它禁用C ++风格的识别//'评论以及inline关键字。

该替代关键字__asm__,__extension__, __inline__和__typeof__继续,尽管工作 -ㄧ的。当然,您不希望在ISO C程序中使用它们,但将它们放在可能包含在编译完成的头文件中是有用的-ㄧ。备用的预定义宏,如__unix__和__vax__也可用,有或没有-ㄧ的。

的 -ㄧ选项不会导致非ISO程序被无偿地拒绝。为了那个原因,-Wpedantic 除了需要 -ㄧ。请参阅警告选项。

宏__STRICT_ANSI__是预定义的-ㄧ 选项被使用。某些头文件可能会注意到此宏,并且不要声明某些功能或定义ISO标准不要求的某些宏; 这是为了避免干扰可能使用这些名称的其他任何程序。

通常内置但不具有ISO C(如alloca和ffs)定义的语义的函数不是内置函数-ㄧ用来。请参阅GCC提供的其他内置功能,了解影响功能的详细信息。

-std=
确定语言标准。有关这些标准版本的详细信息,请参阅GCC支持的语言标准。当选择编译C或C ++时,此选项目前才被支持。

编译器可以接受几个基本标准,如“c90' 要么 'c ++ 98'和这些标准的GNU标准,如“gnu90' 要么 'gnu ++ 98'。当指定基准标准时,编译器接受遵循该标准的所有程序,以及使用不违反基准标准的GNU扩展。例如, -std = c90关闭那些不符合ISO C90 GCC的某些功能,比如asm和typeof 关键字,而不是其他GNU扩展没有在ISO C90意义,如省略的中期?: 表现。另一方面,当指定了标准的GNU标准时,编译器支持的所有功能都被启用,即使这些功能改变了基本标准的含义。因此,一些严格的程序可能会被拒绝。特定标准被使用-Wpedantic识别哪个特性是标准版本的GNU扩展。例如 -std = gnu90 -Wpedantic 警告C ++风格'//“评论,而 -std = gnu99 -Wpedantic 才不是。

必须提供此选项的值; 可能的值是

“c90“
“c89“
“iso9899:1990“
支持所有ISO C90程序(与ISO C90冲突的某些GNU扩展禁用)。与...一样-ㄧ 为C代码。

“iso9899:199409“
修改1中修改的ISO C90。

“c99“
“c9x“
“iso9899:1999“
“iso9899:199x“
ISO C99。此标准基本上完全支持,模数错误和浮点问题(主要是但不完全与附件F和G中的可选C99功能完全相关)。见 http://gcc.gnu.org/c99status.html以获取更多信息。名字 'c9x'和'iso9899:199x“已被弃用。

“c11“
“c1x“
“iso9899:2011“
ISO C11,ISO C标准的2011修订版。该标准基本上完全支持,模数错误,浮点问题(主要但不完全与附件F和G中的可选C11特性相关)和可选附件K(界限检查接口)和L(可分析性)。名字 'c1x“已被弃用

“gnu90“
“gnu89“
GNU标准ISO C90(包括一些C99功能)。

“gnu99“
“gnu9x“
GNU标准ISO C99。名字 'gnu9x“已被弃用

“gnu11“
“gnu1x“
GNU标准ISO C11。这是C代码的默认值。名字 'gnu1x“已被弃用

“c ++ 98“
“c ++ 03“
1998年ISO C ++标准加上2003年的技术更正和一些其他缺陷报告。与...一样-ㄧ 用于C ++代码。

“gnu ++ 98“
“gnu ++ 03“
GNU标准 -std = c ++ 98的。

“c ++ 11“
“c ++ 0x“
2011年ISO C ++标准加上修改。名字 'c ++ 0x“已被弃用

“gnu ++ 11“
“gnu ++ 0x“
GNU标准 -std = c ++ 11的。名字 'gnu ++ 0x“已被弃用

“c ++ 14“
“c ++ 1y“
2014年ISO C ++标准加上修改。名字 'c ++ 1y“已被弃用

“gnu ++ 14“
“gnu ++ 1y“
GNU标准 -std = c ++ 14的。这是C ++代码的默认值。名字 'gnu ++ 1y“已被弃用

“c ++ 1z“
ISO C ++标准的下一次修订,暂定于2017年。支持是高度实验性的,在将来的版本中几乎肯定会以不兼容的方式发生变化。

“gnu ++ 1z“
GNU标准 -std = c ++ 1z的。支持是高度实验性的,在将来的版本中几乎肯定会以不兼容的方式发生变化。

  

总结:

  目前来看,c/c++的89/11是最流行的,其实就是实用,有产生力。至于之前的古董,只能说除了兼容性好,几乎没其他的优势了。

  另外,请大家请注意下,C几乎上不再更新了,慢慢转向C++的统一(这话是国外c/cpp论坛的),大家有空多关注C++14/17的发展吧,新特性还是能振奋人心的。

  

谋胆并重

【一通百通】C/C++的std标准总结相关推荐

  1. vc2010多线程使用std标准模板库容器DEBUG版迭代器BUG

    在vc2010多线程环境下使用std标准模板库容器 list 时, 如果是DEBUG版本, 迭代器存在BUG 在<list>文件中,以下代码块会出现非法访问错,实际上是在子线程中调用lis ...

  2. 44 RT-Thread Nano移植到stm32F103CBT6 (STD标准库)

    一.前言 最近在学习rt-thread,然后网上有介绍用RT-Thread Studio和stm32cubex结合进行开发,还有用rt-thread nano提供的pack直接开发,但是这种方式真的不 ...

  3. 工业六轴机器人常见的STD(标准)-DH模型建立方法

    文章目录 一.D-H模型 二.形式1 三.形式2 四.形式3 五.形式4 一.D-H模型 二.形式1 利用MATLAB机器人工具箱Matlab-Robotics-Toolbox建立标准Link函数,其 ...

  4. C++拾取——使用stl标准库生成等差、等比数列的方法

    代码是思想的表达.阅读代码是一个猜测.求证的过程.这个过程非常费脑,所以人们都不喜欢啰啰嗦嗦的表达方式.于是在相同认知水平下,简洁高效的表达是喜闻乐见的.本文将抛砖引玉,通过一些案例讲解如何去简化代码 ...

  5. 《C和C++代码精粹》——1.8 标准流

    本节书摘来自异步社区出版社<C和C++代码精粹>一书中的第1章,第1.8节,作者: [美]Chuck Allison,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. C++11新特性,利用std::chrono精简传统获取系统时间的方法

    一.传统的获取系统时间的方法 传统的C++获取时间的方法须要分平台来定义. 相信百度代码也不少. 我自己写了下,例如以下. const std::string getCurrentSystemTime ...

  7. C++ 异常,标准异常类,自定义异常类,throw,try,catch语句

    要学习异常,首先就要学习throw和try,catch语句: C++中try catch语句用法有非常灵活,有许多种组合: 这里简单介绍以下最基本的用法: 1. 格式 try{ ... } catch ...

  8. 19.1 C++STL标准模板库大局观-STL总述、发展史、组成与数据结构谈

    19.1 C++STL标准模板库大局观-STL总述.发展史.组成与数据结构谈 19.2 C++STL标准模板库大局观-容器分类与array.vector容器精解 19.3 C++STL标准模板库大局观 ...

  9. 有源医疗器械电磁兼容EMC的测试标准、测试项目以及测试方法

    目录 有源医疗器械电磁兼容的测试标准.测试项目以及测试方法 一.什么是电磁兼容 1.1电磁兼容概念 1.2电磁兼容三要素 1.3为什么要做电磁兼容 1.4电磁兼容测试项目 二.电磁兼容标准 2.1基础 ...

最新文章

  1. CF949C Data Center Maintenance(建图+强联通分量)
  2. 用javascript 禁止右键,禁止复制,禁止粘贴
  3. 【学习笔记】13、标准数据类型—元组
  4. java 找不到mysql驱动_java lib目录添加了mysql驱动包,仍然找不到class??
  5. ansible内置模块
  6. 今天开通一个真正属于自己的博客了《L.M》
  7. docker 安装 jdk,配置环境变量
  8. zoj 2112 树状数组 套主席树 动态求区间 第k个数
  9. AcWing1091.理想的正方形(单调队列DP)
  10. 对讲机怎么用_对讲机防水透气解决方案是怎么做的?
  11. sqlplus无密码登录TNS协议适配器错误
  12. User-Agent 汇总
  13. Java高级面试题!传智播客java基础入门pdf
  14. H3CNE、H3CSE认证考试亲身奋斗过程的心得(拿出来晒晒)
  15. 样本相关系数公式的一点化简方法
  16. 看完这个故事终于知道区块链是什么了
  17. Python模拟银行管理系统(面向对象)# 谭子
  18. 小猴吃桃matlab,幼儿园小班水墨画教案《小猴吃桃》
  19. 服务器的种类以及各自的区别
  20. unity3D 初学者的个人总结

热门文章

  1. Visual C 计算机语言函数应用,Visual C 程序设计
  2. 移动wifi显示限制服务器,wifi控制 云服务器异常
  3. layui动态设置单选按钮选中
  4. 高性能服务通信框架Gaea的详细实现--server请求处理流程
  5. 分布式系统的 38 个知识点
  6. vantui上传图片
  7. mysql revoke 列权限_MYSQL用户权限管理(Grant,Revoke)
  8. 图书关键搜索c语言,【C语言】基于顺序存储结构的图书信息表的最贵图书的查找...
  9. 性能优化登顶安卓阵营,vivo X20闪耀王者荣耀巅峰之战
  10. 基于磁场数据侧信道分析的应用识别技术