随着 C11 支持的引入,语言变种不再是 C89 和 C99 之间简单的二项选择,现在有了第三个选择:C11。
通过 Oracle Solaris Studio 12.3,选择是 C99 还是 C89 并由 –xc99 标志控制:
|
通过 Oracle Solaris Studio 12.4 和 Oracle Developer Studio 12.5 ,语言变种的选择(C89、C99 或 C11)应使用 –std 标志控制:
|
以下是 –xc99 标志和 –std 标志之间的简单映射:
|
以下用于控制语言变种的选项在 Oracle Developer Studio C 编译器中已过时或很快就会过时:–Xc、–Xa、–Xt、–xc99。
–xc99:选择 ISO C99 或 C89 语言
–Xc:对使用非 ISO C 构造的程序发出错误和警告
–Xa:接受 ISO C 以及 C 语言的扩展
–Xt:接受 ISO C 以及 K&R C 兼容性扩展
–Xs:接受 K&R C
如果以前使用 –Xa,则应改用 –std 选项以及 –pedantic 选项。使用 –Xt 或 –Xs 的传统代码需要转换为 ISO C 语言变种。
可使用 –xlang 选项控制与标准符合性相关的特定 libc 函数的行为。在 Oracle Solaris Studio 12.4 C 编译器中,缺省行为是 C11 语言构造和 C89 库行为。在此缺省模式中,___STDC_VERSION__ (199409L) 表示 C89 标准。
在 Oracle Developer Studio 12.5 C 编译器中,语言功能和库行为缺省为 C11 模式,__STDC_VERSION__ (201112L) 反映了 C11。
注意:在 Oracle Solaris Studio 12.3 中,此行为由子选项 –xc99=lib 控制。