От https://pubs.opengroup.org/onlinepubs/9699919799/:
Опция X / Open System Interfaces (XSI) - это основной интерфейс прикладного программирования для C и sh программирования для систем в соответствии со спецификацией Single UNIX. Это надмножество обязательных требований для соответствия POSIX.1-2017.
Макрос __XSI_VISIBLE
делает видимыми расширения «ванильных» интерфейсов POSIX, которые в противном случае были бы запрещены в пространство имен. Помните, что стандарты C языка, такие как ISO C и POSIX, позволяют приложению определять все нестандартные идентификаторы (в ISO C и «ванильном» POSIX strptime
не зарезервирован, вы можете написать функцию с этим имя и пусть не мешает). Определяя так называемые макросы тестирования функций , вы расширяете набор стандартных идентификаторов и уменьшаете те, которые доступны для определения программистом приложения.
Ваш компилятор сохраняет его на 0, потому что поставщик реализации выбрал это задача прикладного программиста - включать XSI, когда он / она этого хочет. Прикладные программисты делают это, определяя макросы желаемой функции тестирования перед включением заголовка, например, с помощью
#define _POSIX_SOURCE
#define __XSI_VISIBLE 1
#include <time.h>
или передают -D__XSI_VISIBLE=1
компилятору.