本节简要介绍在 Sun Studio 12 Update 1 C++ 5.10 编译器发行版中引入的 C 编译器的新特性和新功能。有关详细的说明,请参见每项的交叉引用。
如果应用程序代码中包含带有参数或返回值(使用 _m128/_m64 数据类型)的函数,则在 x86 平台的 Solaris OS 上或 Linux OS 上,编译器创建的目标文件与以前的编译器版本不兼容。使用 .il 内联函数文件、汇编程序代码或调用这些函数的 asm 内联语句的用户也需要注意这种不兼容性。
为 x86 处理器 woodcrest、penryn、nehalem、core2 和 SPARC 处理器 ultraT2plus 及 sparc64vii 新增了 -xtarget 值。
为 x86 体系结构 ssse3、sse4_1、sse4_2 和 SPARC 体系结构 sparcima 新增了 -xarch 值。
为 SPARC 处理器 sparc64vii、ultraT2plus 新增了 —xchip 值。为 x86 处理器 core2、penryn、nehalem 新增了 —xchip 值。
-xprofile=collect 和 -xprofile=use 选项为动态链接的多线程应用程序的文件配置提供了改进的支持。
-xcrossfile=1 选项成为 -xipo=1 选项的别名。-xcrossfile=0 选项不再起任何作用。具体来说,-xcrossfile=1 和 -xcrossfile=0 等效于 -xipo=1。
在 Solaris 平台上,-xpec[=yes|no] 选项会生成可重新编译的 PEC 二进制文件,以用于自动调优系统 (Automatic Tuning System, ATS)。
-Y 选项不接受 i 作为参数。
在 SPARC 平台上,现在针对 x03 或更高优化级别隐式启用 -xdepend 选项,-fast 选项的扩展中不再包括此选项。
OpenMP 3.0 的支持包括 libmtsk 库。缺省情况下,OpenMP 程序将与此库链接,而不是与 Solaris OS 中的 libmtsk 库链接。
-xannotate[=yes|no](仅限 SPARC 平台)指示编译器创建二进制文件,之后这些文件可以由 binopt(1) 之类的二进制文件修改工具进行转换。
现在,在 x86 Solaris 平台上支持 -xia(区间运算)选项。
现在,在 x86 Solaris 平台和 Linux 平台上支持 -xipo_archive 选项。
-Qoption 选项不再接受 ube_ipa 作为参数。
-fast 选项的扩展现在包括 -D_MATHERR_ERRNO_DONTCARE。
现在支持用于显示并行化警告消息的 -xvpara 选项。
-sb、-sbfast、-xsb 和 -xsbfast 选项现已过时,默认忽略。
现在,在优化级别为 -O 或 -xO 的情况下,指定 -g 选项时,只要不同时指定 +d,编译器就会内联代码。
现在支持 pragma must_have_frame。
在标准 C++ 中,switch 语句中的 case 标签只能有一个关联值。Sun Studio C++ 编译器允许在某些编译器中出现扩展,称为 case 范围。
编译器通常在 /tmp 目录中创建临时文件。可以通过设置 TMPDIR 环境变量指定另一个目录。
现在支持函数的以下属性:_attribute_((const)) _attribute_((constructor)) _attribute_((destructor))
现在仅对 struct 类型和 enum 类型支持变量的以下属性:_attribute_((packed))
现在支持通用字符名称。
现在支持循环 pragma。
现在支持用户定义的宏 variadic 参数名称。
添加了用来指定预处理程序 include 文件的 -include filename 选项。