【发布时间】:2018-01-19 00:13:01
【问题描述】:
在 C 语言中使用#define _POSIX_SOURCE 对我的程序有什么好处?我可以在我的程序中访问更多的库,或者我可以调用一些直接存在于 C 中的函数。这个宏是做什么用的?
【问题讨论】:
在 C 语言中使用#define _POSIX_SOURCE 对我的程序有什么好处?我可以在我的程序中访问更多的库,或者我可以调用一些直接存在于 C 中的函数。这个宏是做什么用的?
【问题讨论】:
它允许您使用不属于标准 C 库但属于 POSIX.1(IEEE 标准 1003.1)标准的函数。使用中描述的宏 feature_test_macros 允许您控制公开的定义 通过系统头文件。
据我所知_POSIX_SOURCE 已过时,您应该改用_POSIX_C_SOURCE。
例如,如果要使用strndup,则必须使用
#define _POSIX_C_SOURCE 200809L
另见
【讨论】:
-std=gnu11 或 -std=gnu90 模式下工作,并且 POSIX(和其他一些)符号集在您不需要的情况下可见设置_XOPEN_SOURCE 或_POSIX_C_SOURCE 或其他类似的宏。如果您使用-std=c11 或-std=c99 或(打消这个念头)-std=c90,那么 POSIX 和 GNU 符号默认不可用;您必须定义 _XOPEN_SOURCE 或 _POSIX_C_SOURCE 才能看到 POSIX 符号。