你好,游客 登录 注册 搜索
背景:
阅读新闻

GCC 7.1发布,完全支持C++17

[日期:2017-05-12] 来源:infoq.com  作者:Sergio De Simone ,译者 Rays [字体: ]

据GCC的维护者Jakub Jelinek所写,在GNU编译器套件集GCC的最新主版本(Majoir Release)GCC 7.1中,提供了丰富的新特性,包括:对当前C++17草案的实验性支持、更好的诊断能力以及新的优化技术。

总所周知,GCC的稳定版(Stable Release)是从x.1开始编号的,而版本号x.0是为候选版(Release Candidate)预留的。因此,GCC 7.1是GCC 7的首个稳定版。

正如前面所提到的,GCC 7.1中的C++ Front End提供了对当前C++17草案的支持,所支持的特性包括constexpr、类模板参数推导(template argument deduction)、自动模板参数和结构化绑定等。GCC 7.1同时支持-std=c++1z-std=gnu++1z编译器标识。在C++的状态页面中,列出了C++ Front End中的所有新特性。正如InfoQ在前期所报道的,ISO C++委员会已于近期完成了对C++17的定义工作,只待得到组织中各国家机构的批准。

GCC 7还对优化器进行了改进,其中包括一些新的过程内和过程间优化,例如:

  • 循环切分(Loop splitting),编译器选项为-fsplit-loops。在一些循环中,包含对一部分代码永真而对其余代码永假的条件,该优化选项适用于这样的循环。
  • 值范围(Value range)和按位常量传播(Constant Propagation),编译器选项分别为-fipa-vrp和-fipa-bit-cp。它们分别用于在调用关系图中传播变量所属范围的知识,以及变量中值为零的比特位的位置信息。
  • 代码提升(Code hoisting),编译器选项为-fcode-hoisting。一个函数可能存在多个尽早退出的执行路径,该选项通过在所有这些路径上对表达式求值,改进了部分冗余消除(partial redundancy elimination)过程。
  • 域外地址纠错(Out-of-scope address sanitization),编译器选项为-fsanitize-address-use-after-scope。用于纠错在定义范围之外的地址上使用的变量。例如:
int main (int argc, char **argv) {
  char *ptr;
  {
      char my_char;
      ptr = &my_char;
  }
  *ptr = 123;  //这里,变量my_char的地址无效。
  return *ptr;
}
  • 通用向量操作的算术溢出,编译器选项为-fsanitize=signed-integer-overflow。

在诊断方面,GCC 7.1改进了错误定位、错误定位范围、对错误拼写的标识符提出建议、选项名称和修复性(fix-it)提示,并给出了新的告警信息。

最后应注意的是,GCC 7.1中的一些改进可导致使用以前版本正常编译的C++代码出现编译不通过的问题。涉及的改进包括:更严格的模板规则、对操作符名字修饰(name mangling)转换的改进等。

GCC 7.1的全部改进列出于更新日志中。GCC 7.1可以从GNU FTP服务器下载。

Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)  http://www.linuxidc.com/Linux/2014-04/99583.htm 

Ubuntu 14.04 LST安装GCC 4.1.2  http://www.linuxidc.com/Linux/2016-06/132040.htm

Ubuntu下Vim+GCC+GDB安装及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm 

Ubuntu下两个GCC版本切换 http://www.linuxidc.com/Linux/2012-10/72284.htm 

CentOS6.5升级手动安装GCC4.8.2  http://www.linuxidc.com/Linux/2015-01/112595.htm 

Ubuntu升级GCC版本 http://www.linuxidc.com/Linux/2016-11/136840.htm

CentOS7环境下在/离线安装GCC与GCC-C++  http://www.linuxidc.com/Linux/2017-03/142319.htm

Ubuntu 16.04 LTS 降级安装GCC 4.8  http://www.linuxidc.com/Linux/2017-03/142299.htm

查看英文原文: GCC 7.1 Released With Full C++17 Support

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-05/143699.htm

linux
本文评论   查看全部评论 (1)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 匿名 发表于 2017/5/12 13:23:20
好好支持下GOLANG