CPU_SET
で定義する必要があるglibclinux固有のマクロであるsched.h
を使用したい。マンページには、マクロを定義するために_GNU_SOURCE
を定義する必要があると明記されています。ただし、ヘッダーを見ると、CPU_SET
は、__USE_GNU
が定義されている場合にのみ定義されます(#ifdef
ガードがあります)。数年前、_GNU_SOURCE
が必要だったことを覚えているようです。
質問:
1)明らかにマンページがオフになっています。マンページが正しくないことをメンテナに通知するにはどうすればよいですか?
2)_GNU_SOURCE
から__USE_GNU
への移行はいつ行われましたか(バージョンまたは時間のいずれかで)
3)新しいバージョンのglibcがまだ_GNU_SOURCE
を使用している状況はありますか?または、__USE_GNU
を定義するだけで十分であると安全に想定できますか?
_GNU_SOURCE
は、自分で定義する必要がある唯一のものです。 __USE_GNU
は、features.h
が定義されている場合、および場合によっては他の条件下で、_GNU_SOURCE
(他のすべてのglibcヘッダーに含まれている)のメカニズムを介して内部的に定義されます。 __USE_GNU
を自分で定義または定義解除すると、glibcヘッダーがひどく壊れます。
何よりも先にdefine_GNU_SOURCEを定義する必要があります。このスニペットはここで機能します:
#define _GNU_SOURCE
#include <sched.h>
int main()
{
cpu_set_t set;
CPU_SET(0, &set);
return 0;
}