_POSIX_TIMERS 的可能值是多少?
What are the possible values of _POSIX_TIMERS?
posixoptions manpage 显示以下宏可用于确定主机对 posix 计时器的支持程度 API:
_POSIX_TIMERS
_POSIX_CPUTIME
_POSIX_THREAD_CPUTIME
_POSIX_CLOCK_SELECTION
_POSIX_MONOTONIC_CLOCK
在我的开发系统上(Ubuntu-based Linux 发行版,使用 gcc 7.5.0),_POSIX_TIMERS
计算为 200809
,_POSIX_CPUTIME
为0
,_POSIX_THREAD_CPUTIME
到 0
。
我一直在搜索有关这些宏的更多信息,但似乎找不到所需的信息。我想知道它们在哪里定义(在头文件中?还是由编译器 "magically" 定义?),以及 _POSIX_TIMERS
的可能值是什么。
但是,我对一些 C 代码执行了 运行,这些代码将 _POSIX_TIMERS
与另一个以 2012
开头的常数进行比较。所以显然各种不同的值必须是可能的。
POSIX定义(2018版)说:
_POSIX_TIMERS
The implementation supports timers. This symbol shall always be set to the value 200809L
.
当(由实现而不是您)定义时,这些 功能测试宏 扩展为 long
.
类型的整型常量
如果未定义或0L
,则不支持该功能。
否则值为 YYYYMM
,表示相应标准发布的年份和月份。
这个想法是开发人员可以使用条件编译来测试特定版本或版本集中是否存在特定功能。并使其面向未来,以便开发人员可以表达 "I need at least the 2012 version of this feature, 2008 is not enough".
posixoptions manpage 显示以下宏可用于确定主机对 posix 计时器的支持程度 API:
_POSIX_TIMERS
_POSIX_CPUTIME
_POSIX_THREAD_CPUTIME
_POSIX_CLOCK_SELECTION
_POSIX_MONOTONIC_CLOCK
在我的开发系统上(Ubuntu-based Linux 发行版,使用 gcc 7.5.0),_POSIX_TIMERS
计算为 200809
,_POSIX_CPUTIME
为0
,_POSIX_THREAD_CPUTIME
到 0
。
我一直在搜索有关这些宏的更多信息,但似乎找不到所需的信息。我想知道它们在哪里定义(在头文件中?还是由编译器 "magically" 定义?),以及 _POSIX_TIMERS
的可能值是什么。
但是,我对一些 C 代码执行了 运行,这些代码将 _POSIX_TIMERS
与另一个以 2012
开头的常数进行比较。所以显然各种不同的值必须是可能的。
POSIX定义(2018版)说:
_POSIX_TIMERS
The implementation supports timers. This symbol shall always be set to the value
200809L
.
当(由实现而不是您)定义时,这些 功能测试宏 扩展为 long
.
如果未定义或0L
,则不支持该功能。
否则值为 YYYYMM
,表示相应标准发布的年份和月份。
这个想法是开发人员可以使用条件编译来测试特定版本或版本集中是否存在特定功能。并使其面向未来,以便开发人员可以表达 "I need at least the 2012 version of this feature, 2008 is not enough".