GCC 6.1带来新的C++17特性、完全支持OpenMP、改进了OpenACC

jopen 8年前
   <p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/416a57465c20bb4734c1fd6db3468641.jpg" /></p>    <p>GCC 6.1带来新的C++17特性、完全支持OpenMP、改进了OpenACC。</p>    <p>6.1版本是GCC一年多来的 <a href="/misc/goto?guid=4958990195240901297" rel="nofollow,noindex">第一次重大发布</a> 。据GCC维护者Jakub Jelinek介绍,该版本包含大量的新功能,包括新的C++17特性、完全支持OpenMP以及改进OpenACC支持。</p>    <p>以下是GCC 6.1引入的其中一些最重要的变化:</p>    <ul>     <li>C++编译器现在默认为 <code>-std=gnu++14</code> ,而不是 <code>std=gnu++98</code> ;</li>     <li>改进诊断功能,包括改进位置、位置范围、标识符拼写错误改进建议、修复提示和新的警告;</li>     <li>改进优化器。这影响了程序内优化、程序间优化、链接时间优化和各种目标后台;</li>     <li>扩展后的C++编译器支持预计会在C++17中新增的特性,比如 <a href="/misc/goto?guid=4958990195369161659" rel="nofollow,noindex">混合表达式</a> 、 <code>u8</code> 字符字面量和 <a href="/misc/goto?guid=4958990195484257904" rel="nofollow,noindex">嵌套命名空间定义</a> 。此外,它还支持 <a href="/misc/goto?guid=4958990195582168192" rel="nofollow,noindex">C++ concepts</a> ——一个 <a href="/misc/goto?guid=4958990195691729095" rel="nofollow,noindex">尚未</a> 正式包含在C++17中的特性——和 <a href="/misc/goto?guid=4958990195779092984" rel="nofollow,noindex">C++事务型内存</a> 。类似地,C++标准库经过了扩展,支持诸如 <a href="/misc/goto?guid=4958990195890288507" rel="nofollow,noindex">std::uncaught_exception</a> 、 <a href="/misc/goto?guid=4958990195995634676" rel="nofollow,noindex">std::invoke</a> 、 <a href="/misc/goto?guid=4958990196089160313" rel="nofollow,noindex">std::shared_mutex</a> 这样的C++17特性;</li>     <li>完全支持 <a href="/misc/goto?guid=4958990196180980614" rel="nofollow,noindex">Open Multi-Processing(OpenMP)</a> 4.5规范,这是一个为多平台共享内存多道处理而设计的API;</li>     <li>改进对 <a href="/misc/goto?guid=4958972025159370929" rel="nofollow,noindex">OpenACC</a> 2.0a规范的支持,这是一个由Cray、CAPS、Nvidia和PGI开发的编程标准,旨在简化异构CPU/GPU系统的并发编程。</li>    </ul>    <p>为了让开发人员能够更轻松地将现有代码移植到GCC 6.1,GCC团队还发布了一份 <a href="/misc/goto?guid=4958990196321353538" rel="nofollow,noindex">指南</a> ,详细描述了可能出现的主要问题,并提供了解决方案。举例来说,这包括:</p>    <ul>     <li>选择恰当的 <code>-std</code> 选项,以便使用所需的标准版本;</li>     <li>使用在不同标准版本中有不同行为的特性时发出警告,比如析构函数的 <code>noexcept</code> 异常规范,或者完全禁止,比如在需要指针的地方使用 <code>false</code> ,等等。</li>    </ul>    <p>GCC的最新版本可以从 <a href="/misc/goto?guid=4958990196409409930" rel="nofollow,noindex">GNU镜像列表</a> 中的任何一个镜像下载,在子目录 <code>gcc/gcc-6.1.0/</code> 下。</p>    <p>查看英文原文: <a href="/misc/goto?guid=4958990196508929060" rel="nofollow,noindex">GCC 6.1 Brings New C++17 Features, Full Support for OpenMP, Improves OpenACC</a></p>    <p>来自: <a href="/misc/goto?guid=4958990196617434289" rel="nofollow">infoq.</a></p>