在C程序中,我应该如何以及何时使用_POSIX_C_SOURCE?

7
我发现我需要维护一个C语言项目,而且这个项目还需要在较旧的平台上编译。目前为止,在某些平台上,宏 _POSIX_C_SOURCE 已经定义了。我想知道-如果将其定义是可以接受的,那么是否应该在所有平台上都定义它?也许使用最高相关值?
从更一般的角度来看,我想问:什么情况下应该使用 _POSIX_C_SOURCE
1个回答

5

_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)

一般来说,如果需要严格的POSIX兼容性,则需要定义_POSIX_C_SOURCE

如果不关心特定的POSIX标准兼容性,可以在每个项目中安全地定义它。


1
“不关心特定的POSIX标准合规性”是什么意思?难道不应该是反过来,即强制执行特定的POSIX标准合规性吗? - einpoklum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接