下面列出了此 5.13 发行版中特定于 C++ 编译器的新增和更改的功能。有关更多信息,请参见 CC(1) 手册页。
C++ 编译器更改包括编译器通用的新增和更改的功能中介绍的更改。
有关详细信息,请参见Oracle Solaris Studio 12.4:C++ 用户指南 和 CC 手册页。
在所有平台上支持 –compat=g。
通过新编译器选项:–std,可以选择 C++ 03 或 C++ 11 语言变种并具有 g++ 二进制文件兼容性。使用 –std=c++11 时,存在以下限制:
当前不支持通用字符名称(转义的 Unicode 字符)。
以 .h 结尾的非标准 iostream 标题(例如 <iostream.h>、<fstream.h> 等)不可用。这些标题用于促进从旧样式的 C++ 转换为 C++98。
新编译器选项:–features=[no%]rtti 可以禁用运行时类型标识 (runtime type identification, RTTI)。
新编译器选项:–xprevise 生成可以在代码分析器中查看的源代码的静态分析。
具有 -xoption 等效项的以下选项现在已弃用:
–help
–inline
–libmieee
–libmil
–nolib
–nolibmil
–pg
–time
–unroll
相反,您应该使用 –xhelp、–xinline、–xlibmieee 等。
在 x86 上支持 –xregs=float。
–errtags 的行为现在和 C 编译器一样,但仅针对警告消息显示标记。在前面的 C++ 编译器中,–errtags 选项导致在警告和错误消息中输出一个标记。
缺省 –template 选项从 –template=extdef 更改为 –template=no%extdef。
此更改是因为没有其他编译器使用由 –template=extdef 假定的 definitions separate 模板模型。–template=extdef 选项对如何组织源代码有严格要求,大多数代码不遵循该要求。除非仅使用 Oracle Solaris Studio C++ 进行开发,否则可能需要 –template=no%extdef 选项。
有关更多信息,请参见Oracle Solaris Studio 12.4:C++ 用户指南 中的第 6 章 创建和使用模板和《Understanding the Effects of the Changed Default C++ Template Compilation Model》(《了解更改的缺省 C++ 模板编译模型的效果》)。