GCC4.7 和C++11

GNU 项目今天发布了GCC 4.7 正式版本。


GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。GCC 使用 GPL 与 LGPL 许可证,是 GNU 计划的关键部分。GCC 目前可处理 C++、Fortran、Pascal、Objective-C、Java以及 Ada 等语言。现在是 Linux/Unix、Mac 等操作系统的标准编译器。

该版本在4.6.x的基础上,进行了大量的改进,现在C、C++和Fortran编译器支持3.1版本的OpenMP规范(用于共享内存并行系统的多线程程序设计的一套指导性注释)。该版本还针对各个语言进行了功能改进,主要包括:

针对C的功能改进

  • 支持ISO C11标准中的更多特性。除了之前的-std=c1x和-std=gnu1x选项外,GCC现在还支持-std=c11和-std=gnu11选项。

针对C++的功能改进

  • G++现在支持-std=c++11、-std=gnu++11和-Wc++11-compat选项,这些选项的作用相同。
  • 实现了C++11的extended friend语法。
  • 实现了C++11的重写控制。
  • 实现了C++11的非静态数据成员初始化。
  • 实现了C++11的用户定义数据标识。
  • 实现了C++11的别名声明。
  • 实现了C++11的委托构造函数。

针对运行时库(libstdc++)的改进

  • 实验性地支持新的ISO C++11标准。
  • 增加了--enable-clocale=newlib配置选项。
  • 用于无序关联容器的调试模式迭代器。
  • 通过包含<unistd.h>来避免破坏全局命名空间。

针对Go语言的改进

  • 现在GCC实现了Go1语言标准,目前对于Go的支持尚不完全,预计将在4.7.1版本中进行改善。
  • Go已经在GNU/Linux和Solaris平台上进行了测试,在其他平台中也可能会很好地运行。

关于改进的详细信息可参阅:GCC 4.7 Changes

使用GCC 4.7的一些注意事项:

  • 一些针对旧系统的支持功能以及最近没有被维护或检验的GCC目标端已经被放弃,在下个版本中将会永久删除这些代码。
  • AVR端的libgcc已得到改善,它的multilib架构得到了增强。因此,所有应用程序的对象必须在GCC 4.6.x或4.7.0中进行编译。

从之前GCC版本迁移至4.7版,可参阅:迁移指南

GCC 4.7下载http://gcc.gnu.org/mirrors.html

MinGW也更新到了4.7.0了,下载是这里:http://sourceforge.net/projects/mingw/?source=directory

posted @ 2012-06-27 10:23  fangying  阅读(2426)  评论(0编辑  收藏  举报