1

版本的 POSIX 规范声明符号 _POSIX_THREADS 的允许值为-1、0 或 200112L,但没有说明每个值代表什么。

boost中的评论表明,大于零的值表示支持 posix 线程,但附近的预处理器检查似乎也将零解释为“启用线程”。

如何解释三个允许的值?特别是,-1 是否意味着“无线程”?零是指线程还是没有线程?我猜 200112L 表示线程,但我也有兴趣了解更多信息。

基本上,我只是想验证 boost 预处理器检查是否是测试 posix 线程存在的正确方法,尽管看起来有点误导性的评论。

4

1 回答 1

2

要引用您引用的 POSIX 规范页面:

如果使用值 -1 定义符号常量,则不支持该选项。不需要提供仅选项所需的标头、数据类型和函数接口。尝试使用仅与该选项相关联的任何内容的应用程序被认为需要扩展。

如果符号常量的定义值大于零,则在执行应用程序时应始终支持该选项。所有标题、数据类型和功能都应存在并按规定操作。

如果一个符号常量被定义为零值,那么所有的头文件、数据类型和函数都应该存在。应用程序可以在运行时检查是否支持该选项,方法是使用指定的名称参数调用 fpathconf()、pathconf() 或 sysconf()。

于 2013-10-23T19:43:05.270 回答