对于 POSIX 行为,请使用 -D_POSIX_C_SOURCE 标志集 ≥ 199506L 来编译应用程序。对于 Solaris 行为,请使用 -D_REENTRANT 标志来编译多线程程序。这些编译器标志适用于应用程序的每个模块。
对于混合的应用程序,具有 POSIX 语义的 Solaris 线程使用 -D_REENTRANT 和 -D_POSIX_PTHREAD_SEMANTICS 标志进行编译。
要编译单线程应用程序,请不要定义 -D_REENTRANT 标志,也不要定义 -D_POSIX_C_SOURCE 标志。不存在这些标志时,errno、stdio 等的所有原有定义仍然生效。
请在不使用 -D_REENTRANT 标志的条件下编译单线程应用程序。使用这种方式编译单线程应用程序,以避免将宏(如 putc(3s))转换为可重复执行函数调用时引起的性能降低。
总之,定义 -D_POSIX_C_SOURCE 的 POSIX 应用程序将获取例程的 POSIX 语义。仅定义 -D_REENTRANT 的应用程序将获取这些例程的 Solaris 语义。定义 -D_POSIX_PTHREAD_SEMANTICS 的 Solaris 应用程序将获取这些例程的 POSIX 语义,但仍然可以使用 Solaris 线程接口。
同时定义 -D_POSIX_C_SOURCE 和 -D_REENTRANT 的应用程序将获取 POSIX 语义。