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

栏目: 服务器 · 编程工具 · 发布时间: 7年前

内容简介:GCC 7.1发布,完全支持C++17

据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服务器 下载。

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


以上所述就是小编给大家介绍的《GCC 7.1发布,完全支持C++17》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Hard Thing About Hard Things

The Hard Thing About Hard Things

Ben Horowitz / HarperBusiness / 2014-3-4 / USD 29.99

Ben Horowitz, cofounder of Andreessen Horowitz and one of Silicon Valley's most respected and experienced entrepreneurs, offers essential advice on building and running a startup—practical wisdom for ......一起来看看 《The Hard Thing About Hard Things》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具