【发布时间】:2018-01-26 11:58:06
【问题描述】:
我不得不维护一些 C 项目,这些项目也应该在旧平台上编译。目前,对于某些平台,定义了宏 _POSIX_C_SOURCE。我想知道 - 如果定义它是可以接受的,我不应该总是在所有平台上定义它吗?也许具有最高的相关价值?
概括地说,我想我在问:应该在什么时候以及在什么条件下使用_POSIX_C_SOURCE?
【问题讨论】:
标签: c compilation posix multiplatform building
我不得不维护一些 C 项目,这些项目也应该在旧平台上编译。目前,对于某些平台,定义了宏 _POSIX_C_SOURCE。我想知道 - 如果定义它是可以接受的,我不应该总是在所有平台上定义它吗?也许具有最高的相关价值?
概括地说,我想我在问:应该在什么时候以及在什么条件下使用_POSIX_C_SOURCE?
【问题讨论】:
标签: c compilation posix multiplatform building
_POSIX_C_SOURCE 提供不同的功能。
_POSIX_C_SOURCE 1 使来自 POSIX.1 标准的功能可用
_POSIX_C_SOURCE 2 使来自 POSIX.2 标准的功能可用
_POSIX_C_SOURCE 199309L 使来自 POSIX.1b 标准的功能可用
200809L 等更高的值可提供更多功能。 (man 7 feature_test_macros)
如果需要strict POSIX compliance,一般需要_POSIX_C_SOURCE
如果您不关心特定的 POSIX 标准合规性,在每个项目中定义它是安全的。
【讨论】: