_GNU_SOURCE и __USE_GNU
Я хочу использовать CPU_SET
, который представляет собой специфический для Linux макрос, который должен быть определен в sched.h
В manpage четко указано, что _GNU_SOURCE
должен быть определен так, чтобы был определен макрос. Однако, глядя на заголовок, CPU_SET
определяется только в том случае, если определено __USE_GNU
(существует защита #ifdef
). Кажется, я помню несколько лет назад, что нужно было _GNU_SOURCE
.
Вопросы:
1) Очевидно, что man-страница отключена. Как уведомить сопровождающего о неверной странице руководства?
2) Когда произошел переход от _GNU_SOURCE
до __USE_GNU
(с точки зрения версии или времени)
3) Существуют ли ситуации, когда более новые версии glibc все еще используют _GNU_SOURCE
? Или я могу с уверенностью предположить, что определение __USE_GNU
является достаточным?
Ответы
Ответ 1
_GNU_SOURCE
- это единственный, который вы должны определить сами. __USE_GNU
определяется внутри механизма через features.h
(который включен всеми другими заголовками glibc), когда _GNU_SOURCE
определен и, возможно, в других условиях. Определение или неопределенность __USE_GNU
будет сильно нарушать заголовки glibc.
Ответ 2
вам нужно определить_GNU_SOURCE раньше всего. Этот фрагмент работает здесь:
#define _GNU_SOURCE
#include <sched.h>
int main()
{
cpu_set_t set;
CPU_SET(0, &set);
return 0;
}