man -k XPG4
показывает, что есть standards(5)
людей страница, на которой перечислены тестовые макросы и библиотеки, связывающие данные для различных стандартов, в том числе следующего:
X/Open CAE Чтобы построить или компилировать приложение, которое соответствует одному из спецификациям X/Open CAE, используйте следующие рекомендации. Приложениям не нужно устанавливать макросы проверки функций POSIX, если им требуются как функции CAE, так и POSIX.
SUS (XPG4v2)
The application must define _XOPEN_SOURCE with a value
other than 500 (preferably 1) and set
_XOPEN_SOURCE_EXTENDED=1.
/usr/include
через оглавлению для _XOPEN_SOURCE
получается больше информации в /usr/include/sys/feature_tests.h
:
приложений авторы, желающие использовать любые функции, указанные в X/Open UNIX Extension необходимо определить _XOPEN_SOURCE
и _XOPEN_SOURCE_EXTENDED=1
. Внутренний макрос Sun _XPG4_2
не должен использоваться на своем месте, так как могут возникнуть неожиданные результаты.
Таким образом, определение _XPG4_2
не является для него способом.
Если какие-либо определения структуры зависят от этих макросов, вам определенно будет лучше определять их во всех единицах перевода. Самый простой способ сделать это, чтобы указать их в командной строке компилятора:
cc -D_XOPEN_SOURCE=1 -D_XOPEN_SOURCE_EXTENDED=1
Если вы используете make
, вы должны быть в состоянии сделать это, добавив -D
параметры в CFLAGS
переменной:
CFLAGS += -D_XOPEN_SOURCE=1 -D_XOPEN_SOURCE_EXTENDED=1