_GNU_SOURCE и __USE_GNU - PullRequest
       38

_GNU_SOURCE и __USE_GNU

22 голосов
/ 04 сентября 2011

Я хочу использовать CPU_SET, который является специфичным для glibc макросом linux, который должен быть определен в sched.h На man-странице четко указано, что _GNU_SOURCE должно быть определено так, чтобы был определен макрос. Однако, глядя на заголовок, CPU_SET определяется только в том случае, если определено __USE_GNU (есть защита #ifdef). Кажется, я помню несколько лет назад, что _GNU_SOURCE было необходимо.

Вопросы:

1) Очевидно, что справочная страница отключена. Как уведомить сопровождающего о том, что man-страница неверна?

2) Когда произошел переход с _GNU_SOURCE на __USE_GNU (с точки зрения версии или времени)

3) Существуют ли обстоятельства, когда более новые версии glibc по-прежнему используют _GNU_SOURCE? Или я могу с уверенностью предположить, что определения __USE_GNU достаточно?

Ответы [ 2 ]

30 голосов
/ 04 сентября 2011

_GNU_SOURCE - единственный, кого ты когда-либо определял сам. __USE_GNU определяется внутренне через механизм в features.h (который включен всеми другими заголовками glibc), когда определено _GNU_SOURCE, и, возможно, при других условиях. Определение или отмена определения __USE_GNU самостоятельно приведет к серьезному нарушению заголовков glibc.

9 голосов
/ 21 июля 2012

Вы должны определить_GNU_SOURCE прежде всего. Этот фрагмент кода работает здесь:

#define _GNU_SOURCE
#include <sched.h>


int main()
{
    cpu_set_t set;
    CPU_SET(0, &set);
    return 0;
}
...