1

posixoptions联机帮助页显示以下宏可用于确定主机对 posix timers API 的支持程度:

  • _POSIX_TIMERS
  • _POSIX_CPUTIME
  • _POSIX_THREAD_CPUTIME
  • _POSIX_CLOCK_SELECTION
  • _POSIX_MONOTONIC_CLOCK

在我的开发系统(基于 Ubuntu 的 Linux 发行版,使用 gcc 7.5.0)上,_POSIX_TIMERS计算结果为200809_POSIX_CPUTIMEto0_POSIX_THREAD_CPUTIMEto 0

我一直在寻找有关这些宏的更多信息,但似乎找不到所需的信息。我想知道它们是在哪里定义的(在头文件中?还是由编译器“神奇地”?),以及可能的值_POSIX_TIMERS是什么。

但是,我确实遇到了一些 C 代码,与_POSIX_TIMERS另一个以2012. 因此,显然各种不同的值必须是可能的。

4

2 回答 2

1

POSIX 定义(2018 版)说:

_POSIX_TIMERS

该实现支持计时器。该符号应始终设置为值200809L

它在header<unistd.h>定义。

于 2020-05-15T05:48:12.127 回答
1

当定义时(由实现而不是您),这些功能测试宏扩展为类型的整数常量long

如果未定义或0L,则不支持该功能。否则值为YYYYMM,表示相应标准发布的年份和月份。

这个想法是,开发人员可以使用条件编译来测试特定版本或一组版本中是否存在特定功能。并使其面向未来,因此开发人员可以表达“我至少需要 2012 版本的此功能,2008 还不够”。

于 2020-05-15T08:37:49.003 回答