_GNU_SOURCE和__USE_GNU

Foo*_*Bah 23 c c++ linux gnu glibc

我想使用CPU_SET,这是一个glibc linux特定的宏,应该在sched.h man手册页中清楚地说明_GNU_SOURCE必须定义以便定义宏.但是,查看标题CPU_SET仅在__USE_GNU定义时定义(有#ifdef保护).几年前我似乎记得那_GNU_SOURCE是必要的.

问题:

1)显然,联机帮助页已关闭.如何通知维护者该联机帮助页不正确?

2)什么时候从过渡_GNU_SOURCE__USE_GNU发生(无论是在版本或时间方面)

3)是否存在较新版本的glibc仍在使用的情况_GNU_SOURCE?或者我可以安全地假设定义__USE_GNU是足够的吗?

R..*_*R.. 31

_GNU_SOURCE是你应该自己定义的唯一一个.__USE_GNU在定义features.h_GNU_SOURCE,可能在其他条件下,通过机制(由所有其他glibc头包含)内部定义.定义或取消定义__USE_GNU自己将严重打破glibc标题.

  • 必须**之前定义所有功能测试宏,例如`_GNU_SOURCE`******任何**标准头.您迫不及待地想要定义它,直到您需要它的标头之前. (7认同)
  • 它应该位于源文件的顶行,甚至更好,在编译器的命令行中以`-D_GNU_SOURCE`的形式出现.那么毫无疑问它是从一开始就定义的. (6认同)

Giu*_*ano 10

你必须先修改_GNU_SOURCE.这段代码在这里工作:

#define _GNU_SOURCE
#include <sched.h>


int main()
{
    cpu_set_t set;
    CPU_SET(0, &set);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)