Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

_GNU_SOURCE and __USE_GNU

Tags:

c++

c

linux

gnu

glibc

I want to use CPU_SET, which is a glibc linux-specific macro that should be defined in sched.h The manpage clearly states that _GNU_SOURCE must be defined so that the macro is defined. However, looking at the header, CPU_SET is defined only if __USE_GNU is defined (there is an #ifdef guard). I seem to remember a few years ago that _GNU_SOURCE was needed.

Questions:

1) Clearly the manpage is off. How do I notify the maintainer that the manpage is incorrect?

2) When did the transition from _GNU_SOURCE to __USE_GNU happen (either in terms of version or time)

3) Are there circumstances where newer versions of glibc still use _GNU_SOURCE? Or can I safely assume that defining __USE_GNU is sufficient?

like image 694
Foo Bah Avatar asked Sep 04 '11 01:09

Foo Bah


1 Answers

_GNU_SOURCE is the only one you should ever define yourself. __USE_GNU is defined internally through a mechanism in features.h (which is included by all other glibc headers) when _GNU_SOURCE is defined, and possibly under other conditions. Defining or undefining __USE_GNU yourself will badly break the glibc headers.

like image 130
R.. GitHub STOP HELPING ICE Avatar answered Sep 30 '22 02:09

R.. GitHub STOP HELPING ICE