我想使用CPU_SET
,它是glibc Linux特定的宏,在sched.h
中应该定义。手册明确指出必须定义_GNU_SOURCE
才能定义该宏。然而,查看头文件时,仅当__USE_GNU
被定义时才定义了CPU_SET
(有一个#ifdef
保护)。我好像记得几年前需要_GNU_SOURCE
。
问题:
1)手册显然有误。我该如何通知维护人员手册有误?
2)从何时开始过渡从_GNU_SOURCE
到__USE_GNU
(版本或时间方面)?
3)是否存在新版本的glibc仍使用_GNU_SOURCE
的情况?还是我可以放心地假定定义__USE_GNU
就足够了?
回答:
1)您可以通过向相关项目的维护者发送电子邮件来通知他们手册有误。
2)自glibc 2.20以来,过渡从
_GNU_SOURCE
到__USE_GNU
已经完成。此更改可能在其他版本中进行了部分实施,但是glibc 2.20是最早支持该更改的版本。3)在新版本的glibc中,
_GNU_SOURCE
仍然被支持并保留了向后兼容性。因此,在使用旧代码或需要与旧版本的glibc进行兼容性时,定义_GNU_SOURCE
可能仍然是必要的。但是,定义__USE_GNU
通常足以满足大多数需求。
_GNU_SOURCE
,必须在包含任何标准头文件之前定义。不能等到需要该宏的头文件之前才定义它。 - R.. GitHub STOP HELPING ICE#include <features.h>
才能使其正常工作,而无需显式定义__USE_GNU
。 - marshall.ward