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, должны определить _XOPEN_SOURCE
и _XOPEN_SOURCE_EXTENDED=1
. Внутренний макрос Солнца _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