请注意当前的 C 编译器发行版中以下新增和更改的功能。
如果应用程序代码包含带参数的函数或使用 _m128/_m64 数据类型的返回值,则编译器在 x86 平台上的 Solaris 操作系统或 Linux 操作系统上创建的目标文件将与以前的编译器版本不兼容。使用 .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 库。在 Solaris OS 中,缺省情况下 OpenMP 程序与此库链接,而不是与 libmtsk 库链接。
-xannotate[=yes|no](仅限 SPARC 平台)指示编译器创建以后可由诸如 binopt(1) 之类的二进制修改工具转换的二进制文件。
不再接受 -Wi 选项以用于将参数传递给过程间优化器。
-xsb 和 -xsbfast 选项已废弃并已删除
-xcheck 选项中添加了一个新标志 [no%]init_local。
__FUNCTION__ 和 __PRETTY_FUNCTION__ 是预定义标识符,这些标识符包含词法上封闭的函数的名称。它们在功能上等效于 c99 预定义标识符 __func__。当在 -Xs 和 -Xc 模式下编译时,它们在 Solaris 平台上不可用。
在标准 C 中,switch 语句中的 case 标签只能有一个关联值。Sun Studio C 编译器允许使用某些编译器中使用的扩展(称为 case 范围)。
可以省略条件表达式中的第二个操作数。如果第一个操作数在当时为非零,则条件表达式的值就是第一个操作数的值。
对于在只读内存中启用和禁用文本字符串放置的 -features=[no%] conststrings 选项,缺省值为 -features=conststrings,它代替了过时的 -xstrconst 选项。
添加了用于指定预处理程序 include 文件的 -include filename 选项。
预处理程序 ## 运算符的新行为:编译器现在针对未定义的 ## 操作(C 标准,第 3.4.3 节)发出警告诊断,该操作中未定义 ## 结果,当进行预处理时,该结果包含多个标记而不是一个标记(C 标准,第 6.10.3.3(3) 节)。未定义的 ## 运算的结果现在定义为通过预处理串联 ## 操作数所创建的字符串而生成的第一个单独标记。
全局 asm 语句。基本 asm 语句表示为 asm(汇编程序代码);它将给定的汇编程序文本直接发送到汇编文件。在文件作用域声明(而不是在函数作用域声明)的基本 asm 语句称为全局 asm 语句。其他编译器将其称为顶级 asm 语句。