Подтвердить что ты не робот

_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 является достаточным?

4b9b3361

Ответ 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;
}