搜索历史
热搜词
GCC 8.1支持C++2a的部分特性

推荐:pthread_create()

[pthread_create函数    原型:int  pthread_create((pthread_t  *thread,  pthread_attr_t  *attr,  void  *(*start_routine)(void  *),  void  *arg)    用法:#i

看新闻很累?看技术新闻更累?试试 下载InfoQ手机客户端 ,每天上下班路上听新闻,有趣还有料!

GCC 8.1是GNU编译器集的最新主版本,该版本对即将到来的C++2a标准的某些部分提供了实验性支持。此外,GCC 8.1改进了性能分析驱动的优化,并把Go支持提升到了1.10.1版本。

虽然对于即将到来的C++草案,有关工作尚处于起步阶段,但GCC C++前台提供了两个新标识 -std=c++2a-std=gnu++2a ,以便启用已经预先批准的部分C++新特性,其中包括 指定初始化针对位域的默认成员初始化器 针对预处理程序逗号省略的 VA_OPT lambda捕获[=, this]简化的隐式lambda捕获 等等。要了解GCC 8中的全部C++2a特性,请查阅 C++状态页面

此外,C++的前台输出现在改进了诊断信息,包括改进了位置和位置范围,并提供了若干新的故障排除线索。例如,在以下情况下,编译器现在可以提供一个线索,如在定义之前使用宏,试图访问类或结构的私有字段,当旧式的转换可以用 static_castconst_castreinterpret_cast 替代。

GCC 8.1显著改善了 性能分析驱动的优化 。这些优化使用对被检测代码的性能分析结果决定优化哪一部分代码。例如,GCC现在默认会把面向x86的函数分成热区和冷区。热函数的优化力度更大,GCC会把它们放在同一个区域里,增强局部性。同样,GCC现在能够从一个有效运行的程序中检测不执行的代码,比如,它在某一时刻触发了未定义的行为。

推荐:C语言的数组初始化

[    这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但现在,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停重复.

谈到优化,该版本还新增了循环优化,如 -floop-unroll-and-jam 执行外部循环展开和内部循环融合, -floop-interchange 执行嵌套循环中的循环互换,增强数据局部性。一些已有的优化器也经过了改进,包括 -floop-nest-optimize-ftree-loop-distribution 。所有优化器都是使用 -O3 标识默认启用的。

前面已经提到,Go支持经过了改进,这得益于 Go 1.10.1 的完整实现,这是Go最新的官方版本。此外,其垃圾收集器现在是完全并发的了。

最后需要注意的一点是, GCC 8.1还引入了Armv8.4-A架构支持,可以通过 -march=armv8.4-a 选项启用, 可伸缩向量扩展(SVE) 支持现在是作为Armv8.2-A架构及更高版本的可选扩展。

GCC 8.1还包含许多更有趣的变化,要了解全部细节,请查看 官方的发布说明

查看英文原文: New GCC 8.1 Supports Some Features of C++2a

推荐:C++ 对象的内存布局(上)

[C++ 对象的内存布局(上) 陈皓http://blog.csdn.net/haoel  点击这里查看下篇>>>前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对

主题:

分享:

热 门 推 荐