Макрос C для обнаружения версии OS X (Lion или нет)?

#c #macos #gcc

#c #macos #gcc

Вопрос:

Существует ли предопределенная макрокоманда C для определения версии OS X? Я знаю, __APPLE__ и __MACH__ существуют, но они двоичные. Существует ли конкретное значение для __APPLE_CC__ , которое указывает на Lion?

В частности, Lion добавил определение getline() to <stdio.h> в Lion, и было бы неплохо иметь возможность определять, компилировался ли код на Lion или нет, чтобы обойти ошибки компиляции.

В частности, я имею в виду создание кода Unix C в Bash (за пределами XCode).

Комментарии:

1. Компиляция или запуск на Lion?

Ответ №1:

Availability.h Макросы позволяют проверять зависимости версий от компиляции и времени выполнения. Смотрите обсуждение здесь.

Ответ №2:

Проверьте /usr/include/AvailabilityMacros.h — он содержит макросы, такие как:

 #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER    DEPRECATED_ATTRIBUTE
#else
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER
#endif
  

Я наткнулся на этот материал, потому что ‘openssl / sha1.h’ был покрыт «устаревшими» атрибутами для Lion, поэтому компиляция git получает множество предупреждений.