__USE_POSIX2
- это деталь реализации glibc; это соответствует определению _POSIX_C_SOURCE >= 2
или _XOPEN_SOURCE
. Они также подразумеваются _GNU_SOURCE
и используются неявно, если не включен строгий режим ANSI. Вы не должны определять макросы __USE_ напрямую.
Поскольку оно соответствует значению >= 2
, оно применяется к более поздним версиям. Для получения дополнительной информации см. Справочную страницу feature_test_macros .
Или, из комментариев в features.h (внутренний заголовок - не включать напрямую - обо всем позаботится):
/* These are defined by the user (or the compiler)
to specify the desired environment:
...
_POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
if >=199309L, add IEEE Std 1003.1b-1993;
if >=199506L, add IEEE Std 1003.1c-1995;
if >=200112L, all of IEEE 1003.1-2004
if >=200809L, all of IEEE 1003.1-2008
_XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
Single Unix conformance is wanted, to 600 for the
sixth revision, to 700 for the seventh revision.