此version of the POSIX spec表示allowed values for the symbol _POSIX_THREADS为-1,0或200112L,但未说明每个值的含义。
评论in boost表明大于零的值表示posix线程支持,但附近的预处理器检查似乎将零解释为“启用线程”的含义。
如何解释三个允许值?特别是-1是否意味着“没有线程”?零均值线程或无线程?我猜测200112L意味着线程,但我也对这方面的更多信息感兴趣。
基本上我只想验证boost预处理程序检查是否是测试posix线程存在的正确方法,尽管看起来有点误导性的评论。
答案 0 :(得分:2)
引用您引用的POSIX规范页面:
如果使用值-1定义符号常量,则不支持该选项。不需要提供仅为选项所需的标头,数据类型和功能接口。尝试使用仅与该选项关联的任何内容的应用程序被视为需要扩展。
如果使用大于零的值定义符号常量,则在执行应用程序时应始终支持该选项。所有标题,数据类型和功能都应存在,并应按规定运行。
如果使用零值定义符号常量,则应存在所有标题,数据类型和函数。应用程序可以在运行时检查是否通过使用指定的name参数调用fpathconf(),pathconf()或sysconf()来支持该选项。