Oracle® Developer Studio 12.5 发行版的新增功能

退出打印视图

更新时间: 2016 年 7 月
 
 

Oracle Solaris 中 C 编译器的新缺省设置

以下功能是 Oracle Solaris 中 C 编译器的新缺省设置:

  • C 编译器的缺省模式已更改

  • 新的缺省模式可能会影响您的应用程序

  • 如果需要,仍可使用旧模式

__STDC_VERSION__ 的更改

以下更改说明了 __STDC_VERSION__ 的新功能:

  • 缺省情况下,在 Oracle Solaris 上以前版本的 C 编译器接受它们知道的所有 C99 和 C11 功能,但仅通过将 __STDC_VERSION__ 预定义为 199409L 来声明为符合 C89。

  • 缺省情况下,新的 C 编译器将 __STDC_VERSION__ 预定义为 201112L,声明符合 C11。

对 Oracle Solaris 中用户应用程序的影响

以下信息说明对 Oracle Solaris 平台中的用户应用程序的影响:

  • 所包括的使用诸如 _XOPEN_SOURCE_POSIX_SOURCE_POSIX_C_SOURCE 之类的宏的文件和功能测试可能以不同方式进行解析。

    例如,如果使用 _POSIX_SOURCE,则可能发生以下错误:

    Compiler or options invalid for pre-UNIX 03 X/Open applications

    问题在于,_POSIX_SOURCE 在技术上请求了 C89 编译器,如 standards(5) 手册页中所述。

    如果您的应用程序测试较旧版本的标准(例如,_POSIX_SOURCE),可考虑更改代码以尝试较新版本(在此示例中是 _XOPEN_SOURCE=600

  • 测试 __STDC_VERSION__ 的用户应用程序可能以不同方式进行解析

–xlang=c89 的临时解决方法

您可能不希望明确选择 –std=c89,因为这样做将会禁用 C99 和 C11 功能。

而如果选择 –xlang=c89,则会使新的 C 编译器接受与以前版本的 C 编译器相同的程序并定义相同的 __STDC_VERSION