Прочитал http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3400.html и никак не могу понять, как же этот proposal позволяет делать то, что там в частности описано:
Interface-specification macros should not be affected. Many libraries have mechanisms whereby client code sets macros before including the library headers, to specify the API level that the library is expected to provide. Such macros areespecially common with platform libraries and include things like:
the WIN32_LEAN_AND_MEAN and NOxxx macros in the Microsoft Windows platform API
the _POSIX_C_SOURCE and _XOPEN_SOURCE macros in the POSIX platform API
This proposal was designed not to affect the function of such mechanisms.
Как же будет работать:
#define _GNU_SOUCE
#include <unistd.h>
Если приоритет файла, в котором определено макро _GNU_SOURCE ниже чем приоритет файла unistd.h? Имеется ввиду, что если в unistd.h встретилось:
#define _GNU_SOURCE
то его приоритет не будет уменьшаться? Но ведь оно там не обязательно должно быть определено, в unistd.h ведь может быть например так:
#ifdef _GNU_SORCE
...
#endif
Или имеется ввиду «приоритет _GNU_SOURCE не будет уменьшаться если его упоминание встретилось в unistd.h»?
Кто-нибудь может прояснить, как это подразумавается должно работать?