我想使用CPU_SET
,这是一个glibc linux特定的宏,应该在sched.h
中定义。该联机帮助页明确指出必须定义_GNU_SOURCE
以便定义宏。但是,查看标题时,CPU_SET
仅在定义__USE_GNU
时才会定义(有#ifdef
后卫)。我似乎记得几年前需要_GNU_SOURCE
。
问题:
1)显然,联机帮助页已关闭。如何通知维护者该联机帮助页不正确?
2)何时发生从_GNU_SOURCE
到__USE_GNU
的转换(无论是版本还是时间)
3)是否存在较新版本的glibc仍然使用_GNU_SOURCE
的情况?或者我可以安全地假设定义__USE_GNU
就足够了吗?
答案 0 :(得分:29)
_GNU_SOURCE
是您应该自己定义的唯一一个。在__USE_GNU
定义features.h
时,_GNU_SOURCE
内部通过__USE_GNU
中的机制定义{{1}},并且可能在其他条件下定义{{1}}。自己定义或取消定义{{1}}会严重破坏glibc标题。
答案 1 :(得分:8)
你必须先修改_GNU_SOURCE。这段代码在这里工作:
#define _GNU_SOURCE
#include <sched.h>
int main()
{
cpu_set_t set;
CPU_SET(0, &set);
return 0;
}